_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12is_discardedEv:
32970|  6.72k|    {
32971|  6.72k|        return m_data.m_type == value_t::discarded;
32972|  6.72k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dumpEicbNS0_6detail15error_handler_tE:
32842|  21.6k|    {
32843|  21.6k|        string_t result;
32844|  21.6k|        detail::output_string_adapter<char, string_t> string_adapter(result);
32845|       |
32846|  21.6k|        if (indent >= 0)
  ------------------
  |  Branch (32846:13): [True: 0, False: 21.6k]
  ------------------
32847|      0|        {
32848|      0|            serializer s(string_adapter, indent_char,
32849|      0|                         true, ensure_ascii, static_cast<std::size_t>(indent), error_handler);
32850|      0|            s.dump(*this);
32851|      0|        }
32852|  21.6k|        else
32853|  21.6k|        {
32854|  21.6k|            serializer s(string_adapter, indent_char,
32855|  21.6k|                         false, ensure_ascii, 0, error_handler);
32856|  21.6k|            s.dump(*this);
32857|  21.6k|        }
32858|       |
32859|  21.6k|        return result;
32860|  21.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEC2ERS9_:
22821|  21.6k|        : str(s)
22822|  21.6k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcEC2Ev:
22716|  21.6k|    output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcED2Ev:
22714|  21.6k|    virtual ~output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEE16write_charactersEPKcm:
22830|  25.0k|    {
22831|  25.0k|        str.append(s, length);
22832|  25.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEC2ERNS1_23output_adapter_protocolIcEEcbbmNS1_15error_handler_tE:
28044|  21.6k|        : o(&s)
28045|  21.6k|        , indent_char(ichar)
28046|  21.6k|        , pretty_print(pretty_print_)
28047|  21.6k|        , ensure_ascii(ensure_ascii_)
28048|  21.6k|        , indent_step(indent_step_)
28049|  21.6k|        , error_handler(error_handler_)
28050|  21.6k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE4dumpERKSG_m:
28079|  21.6k|    {
28080|  21.6k|        dump_internal(val, current_indent);
28081|  21.6k|        flush();
28082|  21.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13dump_internalERKSG_mm:
28105|   594k|    {
28106|   594k|        switch (val.m_data.m_type)
28107|   594k|        {
28108|  26.0k|            case value_t::object:
  ------------------
  |  Branch (28108:13): [True: 26.0k, False: 568k]
  ------------------
28109|  26.0k|            {
28110|  26.0k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|  26.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 5.53k, False: 20.5k]
  |  |  ------------------
  ------------------
28111|  5.53k|                {
28112|  5.53k|                    dump_iteratively(val, current_indent);
28113|  5.53k|                    return;
28114|  5.53k|                }
28115|       |
28116|  20.5k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (28116:21): [True: 3.79k, False: 16.7k]
  ------------------
28117|  3.79k|                {
28118|  3.79k|                    put_literal("{}");
28119|  3.79k|                    return;
28120|  3.79k|                }
28121|       |
28122|  16.7k|                if (pretty_print)
  ------------------
  |  Branch (28122:21): [True: 0, False: 16.7k]
  ------------------
28123|      0|                {
28124|      0|                    put_literal("{\n");
28125|       |
28126|       |                    // variable to hold indentation for recursive calls
28127|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28128|       |
28129|       |                    // first n-1 elements
28130|      0|                    auto i = val.m_data.m_value.object->cbegin();
28131|      0|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28131:47): [True: 0, False: 0]
  ------------------
28132|      0|                    {
28133|      0|                        put_indent(new_indent);
28134|      0|                        put_char('"');
28135|      0|                        dump_escaped(i->first);
28136|      0|                        put_literal("\": ");
28137|      0|                        dump_internal(i->second, new_indent, depth + 1);
28138|      0|                        put_literal(",\n");
28139|      0|                    }
28140|       |
28141|       |                    // last element
28142|      0|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28142:21): [True: 0, False: 0]
  ------------------
28143|      0|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28143:21): [True: 0, False: 0]
  ------------------
28144|      0|                    put_indent(new_indent);
28145|      0|                    put_char('"');
28146|      0|                    dump_escaped(i->first);
28147|      0|                    put_literal("\": ");
28148|      0|                    dump_internal(i->second, new_indent, depth + 1);
28149|       |
28150|      0|                    put_char('\n');
28151|      0|                    put_indent(current_indent);
28152|      0|                    put_char('}');
28153|      0|                }
28154|  16.7k|                else
28155|  16.7k|                {
28156|  16.7k|                    put_char('{');
28157|       |
28158|       |                    // first n-1 elements
28159|  16.7k|                    auto i = val.m_data.m_value.object->cbegin();
28160|  35.1k|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28160:47): [True: 18.4k, False: 16.7k]
  ------------------
28161|  18.4k|                    {
28162|  18.4k|                        put_char('"');
28163|  18.4k|                        dump_escaped(i->first);
28164|  18.4k|                        put_literal("\":");
28165|  18.4k|                        dump_internal(i->second, current_indent, depth + 1);
28166|  18.4k|                        put_char(',');
28167|  18.4k|                    }
28168|       |
28169|       |                    // last element
28170|  16.7k|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  16.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28170:21): [True: 16.7k, False: 0]
  ------------------
28171|  16.7k|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  16.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28171:21): [True: 16.7k, False: 0]
  ------------------
28172|  16.7k|                    put_char('"');
28173|  16.7k|                    dump_escaped(i->first);
28174|  16.7k|                    put_literal("\":");
28175|  16.7k|                    dump_internal(i->second, current_indent, depth + 1);
28176|       |
28177|  16.7k|                    put_char('}');
28178|  16.7k|                }
28179|       |
28180|  16.7k|                return;
28181|  16.7k|            }
28182|       |
28183|   249k|            case value_t::array:
  ------------------
  |  Branch (28183:13): [True: 249k, False: 345k]
  ------------------
28184|   249k|            {
28185|   249k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|   249k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3.93k, False: 245k]
  |  |  ------------------
  ------------------
28186|  3.93k|                {
28187|  3.93k|                    dump_iteratively(val, current_indent);
28188|  3.93k|                    return;
28189|  3.93k|                }
28190|       |
28191|   245k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (28191:21): [True: 6.10k, False: 239k]
  ------------------
28192|  6.10k|                {
28193|  6.10k|                    put_literal("[]");
28194|  6.10k|                    return;
28195|  6.10k|                }
28196|       |
28197|   239k|                if (pretty_print)
  ------------------
  |  Branch (28197:21): [True: 0, False: 239k]
  ------------------
28198|      0|                {
28199|      0|                    put_literal("[\n");
28200|       |
28201|       |                    // variable to hold indentation for recursive calls
28202|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28203|       |
28204|       |                    // first n-1 elements
28205|      0|                    for (auto i = val.m_data.m_value.array->cbegin();
28206|      0|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28206:29): [True: 0, False: 0]
  ------------------
28207|      0|                    {
28208|      0|                        put_indent(new_indent);
28209|      0|                        dump_internal(*i, new_indent, depth + 1);
28210|      0|                        put_literal(",\n");
28211|      0|                    }
28212|       |
28213|       |                    // last element
28214|      0|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28214:21): [True: 0, False: 0]
  ------------------
28215|      0|                    put_indent(new_indent);
28216|      0|                    dump_internal(val.m_data.m_value.array->back(), new_indent, depth + 1);
28217|       |
28218|      0|                    put_char('\n');
28219|      0|                    put_indent(current_indent);
28220|      0|                    put_char(']');
28221|      0|                }
28222|   239k|                else
28223|   239k|                {
28224|   239k|                    put_char('[');
28225|       |
28226|       |                    // first n-1 elements
28227|   239k|                    for (auto i = val.m_data.m_value.array->cbegin();
28228|   538k|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28228:29): [True: 299k, False: 239k]
  ------------------
28229|   299k|                    {
28230|   299k|                        dump_internal(*i, current_indent, depth + 1);
28231|   299k|                        put_char(',');
28232|   299k|                    }
28233|       |
28234|       |                    // last element
28235|   239k|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|   239k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28235:21): [True: 239k, False: 0]
  ------------------
28236|   239k|                    dump_internal(val.m_data.m_value.array->back(), current_indent, depth + 1);
28237|       |
28238|   239k|                    put_char(']');
28239|   239k|                }
28240|       |
28241|   239k|                return;
28242|   239k|            }
28243|       |
28244|   239k|            case value_t::string:
  ------------------
  |  Branch (28244:13): [True: 35.1k, False: 559k]
  ------------------
28245|   144k|            case value_t::binary:
  ------------------
  |  Branch (28245:13): [True: 109k, False: 485k]
  ------------------
28246|   153k|            case value_t::boolean:
  ------------------
  |  Branch (28246:13): [True: 8.74k, False: 586k]
  ------------------
28247|   198k|            case value_t::number_integer:
  ------------------
  |  Branch (28247:13): [True: 45.0k, False: 549k]
  ------------------
28248|   276k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28248:13): [True: 78.4k, False: 516k]
  ------------------
28249|   314k|            case value_t::number_float:
  ------------------
  |  Branch (28249:13): [True: 37.5k, False: 557k]
  ------------------
28250|   314k|            case value_t::discarded:
  ------------------
  |  Branch (28250:13): [True: 0, False: 594k]
  ------------------
28251|   319k|            case value_t::null:
  ------------------
  |  Branch (28251:13): [True: 5.63k, False: 589k]
  ------------------
28252|   319k|            default:
  ------------------
  |  Branch (28252:13): [True: 0, False: 594k]
  ------------------
28253|   319k|                dump_scalar(val, current_indent);
28254|   319k|                return;
28255|   594k|        }
28256|   594k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21recursion_depth_limitEv:
 8044|  1.00M|{
 8045|  1.00M|    return 128;
 8046|  1.00M|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16dump_iterativelyERKSG_m:
28270|  9.46k|    {
28271|       |        // Scalars, empty containers and binary values are written by dump_value
28272|       |        // alone, so nothing is allocated for them: only a container with
28273|       |        // elements is ever pushed.
28274|  9.46k|        std::vector<dump_frame> stack;
28275|       |
28276|  9.46k|        dump_value(val, current_indent, stack);
28277|       |
28278|   452k|        while (!stack.empty())
  ------------------
  |  Branch (28278:16): [True: 443k, False: 9.46k]
  ------------------
28279|   443k|        {
28280|   443k|            dump_frame& frame = stack.back();
28281|       |
28282|   443k|            if (frame.value->m_data.m_type == value_t::object)
  ------------------
  |  Branch (28282:17): [True: 71.4k, False: 371k]
  ------------------
28283|  71.4k|            {
28284|  71.4k|                const auto* object = frame.value->m_data.m_value.object;
28285|       |
28286|  71.4k|                if (frame.object_it == object->cend())
  ------------------
  |  Branch (28286:21): [True: 34.0k, False: 37.4k]
  ------------------
28287|  34.0k|                {
28288|  34.0k|                    if (pretty_print)
  ------------------
  |  Branch (28288:25): [True: 0, False: 34.0k]
  ------------------
28289|      0|                    {
28290|      0|                        put_char('\n');
28291|      0|                        put_indent(frame.current_indent);
28292|      0|                    }
28293|       |
28294|  34.0k|                    put_char('}');
28295|  34.0k|                    stack.pop_back();
28296|  34.0k|                    continue;
28297|  34.0k|                }
28298|       |
28299|       |                // the separator goes in front of every element but the first,
28300|       |                // which puts exactly one between each pair and none at the end
28301|  37.4k|                if (frame.object_it != object->cbegin())
  ------------------
  |  Branch (28301:21): [True: 3.43k, False: 34.0k]
  ------------------
28302|  3.43k|                {
28303|  3.43k|                    if (pretty_print)
  ------------------
  |  Branch (28303:25): [True: 0, False: 3.43k]
  ------------------
28304|      0|                    {
28305|      0|                        put_literal(",\n");
28306|      0|                    }
28307|  3.43k|                    else
28308|  3.43k|                    {
28309|  3.43k|                        put_char(',');
28310|  3.43k|                    }
28311|  3.43k|                }
28312|       |
28313|  37.4k|                if (pretty_print)
  ------------------
  |  Branch (28313:21): [True: 0, False: 37.4k]
  ------------------
28314|      0|                {
28315|      0|                    put_indent(frame.child_indent);
28316|      0|                }
28317|       |
28318|  37.4k|                put_char('"');
28319|  37.4k|                dump_escaped(frame.object_it->first);
28320|       |
28321|  37.4k|                if (pretty_print)
  ------------------
  |  Branch (28321:21): [True: 0, False: 37.4k]
  ------------------
28322|      0|                {
28323|      0|                    put_literal("\": ");
28324|      0|                }
28325|  37.4k|                else
28326|  37.4k|                {
28327|  37.4k|                    put_literal("\":");
28328|  37.4k|                }
28329|       |
28330|  37.4k|                const BasicJsonType& element = frame.object_it->second;
28331|  37.4k|                ++frame.object_it;
28332|       |
28333|       |                // read everything needed from the frame before this: entering a
28334|       |                // container pushes another one and can move them all
28335|  37.4k|                const std::size_t element_indent = frame.child_indent;
28336|  37.4k|                dump_value(element, element_indent, stack);
28337|  37.4k|            }
28338|   371k|            else
28339|   371k|            {
28340|   371k|                const auto* array = frame.value->m_data.m_value.array;
28341|       |
28342|   371k|                if (frame.array_it == array->cend())
  ------------------
  |  Branch (28342:21): [True: 177k, False: 193k]
  ------------------
28343|   177k|                {
28344|   177k|                    if (pretty_print)
  ------------------
  |  Branch (28344:25): [True: 0, False: 177k]
  ------------------
28345|      0|                    {
28346|      0|                        put_char('\n');
28347|      0|                        put_indent(frame.current_indent);
28348|      0|                    }
28349|       |
28350|   177k|                    put_char(']');
28351|   177k|                    stack.pop_back();
28352|   177k|                    continue;
28353|   177k|                }
28354|       |
28355|   193k|                if (frame.array_it != array->cbegin())
  ------------------
  |  Branch (28355:21): [True: 15.7k, False: 177k]
  ------------------
28356|  15.7k|                {
28357|  15.7k|                    if (pretty_print)
  ------------------
  |  Branch (28357:25): [True: 0, False: 15.7k]
  ------------------
28358|      0|                    {
28359|      0|                        put_literal(",\n");
28360|      0|                    }
28361|  15.7k|                    else
28362|  15.7k|                    {
28363|  15.7k|                        put_char(',');
28364|  15.7k|                    }
28365|  15.7k|                }
28366|       |
28367|   193k|                if (pretty_print)
  ------------------
  |  Branch (28367:21): [True: 0, False: 193k]
  ------------------
28368|      0|                {
28369|      0|                    put_indent(frame.child_indent);
28370|      0|                }
28371|       |
28372|   193k|                const BasicJsonType& element = *frame.array_it;
28373|   193k|                ++frame.array_it;
28374|       |
28375|       |                // see above
28376|   193k|                const std::size_t element_indent = frame.child_indent;
28377|   193k|                dump_value(element, element_indent, stack);
28378|   193k|            }
28379|   443k|        }
28380|  9.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_valueERKSG_mRNS6_INSH_10dump_frameENSA_ISK_EEEE:
28418|   240k|    {
28419|   240k|        switch (val.m_data.m_type)
28420|   240k|        {
28421|  36.4k|            case value_t::object:
  ------------------
  |  Branch (28421:13): [True: 36.4k, False: 204k]
  ------------------
28422|  36.4k|            {
28423|  36.4k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (28423:21): [True: 2.44k, False: 34.0k]
  ------------------
28424|  2.44k|                {
28425|  2.44k|                    put_literal("{}");
28426|  2.44k|                    return;
28427|  2.44k|                }
28428|       |
28429|  34.0k|                std::size_t child_indent = current_indent;
28430|       |
28431|  34.0k|                if (pretty_print)
  ------------------
  |  Branch (28431:21): [True: 0, False: 34.0k]
  ------------------
28432|      0|                {
28433|      0|                    put_literal("{\n");
28434|      0|                    child_indent = next_indent(current_indent, indent_step);
28435|      0|                }
28436|  34.0k|                else
28437|  34.0k|                {
28438|  34.0k|                    put_char('{');
28439|  34.0k|                }
28440|       |
28441|  34.0k|                stack.emplace_back(&val, current_indent, child_indent);
28442|  34.0k|                stack.back().object_it = val.m_data.m_value.object->cbegin();
28443|  34.0k|                return;
28444|  36.4k|            }
28445|       |
28446|   181k|            case value_t::array:
  ------------------
  |  Branch (28446:13): [True: 181k, False: 58.7k]
  ------------------
28447|   181k|            {
28448|   181k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (28448:21): [True: 3.88k, False: 177k]
  ------------------
28449|  3.88k|                {
28450|  3.88k|                    put_literal("[]");
28451|  3.88k|                    return;
28452|  3.88k|                }
28453|       |
28454|   177k|                std::size_t child_indent = current_indent;
28455|       |
28456|   177k|                if (pretty_print)
  ------------------
  |  Branch (28456:21): [True: 0, False: 177k]
  ------------------
28457|      0|                {
28458|      0|                    put_literal("[\n");
28459|      0|                    child_indent = next_indent(current_indent, indent_step);
28460|      0|                }
28461|   177k|                else
28462|   177k|                {
28463|   177k|                    put_char('[');
28464|   177k|                }
28465|       |
28466|   177k|                stack.emplace_back(&val, current_indent, child_indent);
28467|   177k|                stack.back().array_it = val.m_data.m_value.array->cbegin();
28468|   177k|                return;
28469|   181k|            }
28470|       |
28471|  2.17k|            case value_t::string:
  ------------------
  |  Branch (28471:13): [True: 2.17k, False: 238k]
  ------------------
28472|  12.0k|            case value_t::binary:
  ------------------
  |  Branch (28472:13): [True: 9.83k, False: 230k]
  ------------------
28473|  12.5k|            case value_t::boolean:
  ------------------
  |  Branch (28473:13): [True: 576, False: 240k]
  ------------------
28474|  16.6k|            case value_t::number_integer:
  ------------------
  |  Branch (28474:13): [True: 4.07k, False: 236k]
  ------------------
28475|  22.1k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28475:13): [True: 5.48k, False: 235k]
  ------------------
28476|  22.1k|            case value_t::number_float:
  ------------------
  |  Branch (28476:13): [True: 42, False: 240k]
  ------------------
28477|  22.1k|            case value_t::discarded:
  ------------------
  |  Branch (28477:13): [True: 0, False: 240k]
  ------------------
28478|  22.3k|            case value_t::null:
  ------------------
  |  Branch (28478:13): [True: 138, False: 240k]
  ------------------
28479|  22.3k|            default:
  ------------------
  |  Branch (28479:13): [True: 0, False: 240k]
  ------------------
28480|  22.3k|                dump_scalar(val, current_indent);
28481|  22.3k|                return;
28482|   240k|        }
28483|   240k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_frameC2EPKSG_mm:
28388|   211k|            : value(value_)
28389|   211k|            , current_indent(current_indent_)
28390|   211k|            , child_indent(child_indent_)
28391|   211k|        {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm3EEEvRAT__Kc:
29090|  88.8k|    {
29091|  88.8k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  88.8k|        constexpr std::size_t length = N - 1;
29094|  88.8k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  88.8k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  88.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 300, False: 88.5k]
  |  |  ------------------
  ------------------
29097|    300|        {
29098|    300|            flush();
29099|    300|        }
29100|  88.8k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  88.8k|        write_buffer_pos += length;
29102|  88.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE8put_charEc:
29019|  1.51M|    {
29020|  1.51M|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos == write_buffer.size()))
  ------------------
  |  | 1667|  1.51M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 1.14k, False: 1.51M]
  |  |  ------------------
  ------------------
29021|  1.14k|        {
29022|  1.14k|            flush();
29023|  1.14k|        }
29024|  1.51M|        write_buffer[write_buffer_pos++] = c;
29025|  1.51M|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_escapedERKSC_:
28657|   109k|    {
28658|       |        // dispatch once here rather than test the flag inside the loop: it does
28659|       |        // not change while a string is written, and folding it lets each of the
28660|       |        // two scanners be inlined into a loop of its own
28661|   109k|        if (ensure_ascii)
  ------------------
  |  Branch (28661:13): [True: 0, False: 109k]
  ------------------
28662|      0|        {
28663|      0|            dump_escaped_impl<true>(s);
28664|      0|        }
28665|   109k|        else
28666|   109k|        {
28667|   109k|            dump_escaped_impl<false>(s);
28668|   109k|        }
28669|   109k|    }
_ZN8nlohmann16json_abi_v3_12_06detail16read_eight_bytesEPKh:
 9376|  74.1k|{
 9377|  74.1k|#if defined(_MSC_VER) || defined(__x86_64__) || defined(__i386__) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
 9378|       |    // the byte order already matches (all MSVC targets are little-endian)
 9379|  74.1k|    std::uint64_t result = 0;
 9380|  74.1k|    std::memcpy(&result, b, sizeof(result));
 9381|  74.1k|    return result;
 9382|       |#else
 9383|       |    return static_cast<std::uint64_t>(b[0]) | (static_cast<std::uint64_t>(b[1]) << 8u)
 9384|       |           | (static_cast<std::uint64_t>(b[2]) << 16u) | (static_cast<std::uint64_t>(b[3]) << 24u)
 9385|       |           | (static_cast<std::uint64_t>(b[4]) << 32u) | (static_cast<std::uint64_t>(b[5]) << 40u)
 9386|       |           | (static_cast<std::uint64_t>(b[6]) << 48u) | (static_cast<std::uint64_t>(b[7]) << 56u);
 9387|       |#endif
 9388|  74.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail20count_trailing_zerosEm:
 9319|  73.7k|{
 9320|  73.7k|#if defined(__GNUC__) || defined(__clang__)
 9321|  73.7k|    return __builtin_ctzll(x);
 9322|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9323|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9324|       |    _BitScanForward64(&index, x);
 9325|       |    return static_cast<int>(index);
 9326|       |#else
 9327|       |    int n = 0;
 9328|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9329|       |    {
 9330|       |        if ((x << (64 - shift)) == 0)
 9331|       |        {
 9332|       |            n += shift;
 9333|       |            x >>= shift;
 9334|       |        }
 9335|       |    }
 9336|       |    return n;
 9337|       |#endif
 9338|  73.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_bufferILm512EEEvRKNS4_5arrayIcXT_EEEm:
29141|  31.8k|    {
29142|  31.8k|        put_string(buffer, 0, length);
29143|  31.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringINS4_5arrayIcLm512EEEEEvRKT_mm:
29115|  31.8k|    {
29116|  31.8k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2591|  31.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29116:9): [True: 31.8k, False: 0]
  ------------------
29117|  31.8k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2591|  31.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29117:9): [True: 31.8k, False: 0]
  ------------------
29118|       |
29119|  31.8k|        const char* const s = str.data() + start;
29120|  31.8k|        const std::size_t length = end - start;
29121|       |
29122|  31.8k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1667|  31.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 31.8k]
  |  |  ------------------
  ------------------
29123|      0|        {
29124|      0|            flush();
29125|      0|            o->write_characters(s, length);
29126|      0|            return;
29127|      0|        }
29128|  31.8k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  31.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6, False: 31.8k]
  |  |  ------------------
  ------------------
29129|      6|        {
29130|      6|            flush();
29131|      6|        }
29132|  31.8k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29133|  31.8k|        write_buffer_pos += length;
29134|  31.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringISC_EEvRKT_mm:
29115|  44.6k|    {
29116|  44.6k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2591|  44.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29116:9): [True: 44.6k, False: 0]
  ------------------
29117|  44.6k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2591|  44.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29117:9): [True: 44.6k, False: 0]
  ------------------
29118|       |
29119|  44.6k|        const char* const s = str.data() + start;
29120|  44.6k|        const std::size_t length = end - start;
29121|       |
29122|  44.6k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1667|  44.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 44.6k]
  |  |  ------------------
  ------------------
29123|      0|        {
29124|      0|            flush();
29125|      0|            o->write_characters(s, length);
29126|      0|            return;
29127|      0|        }
29128|  44.6k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  44.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 44.5k]
  |  |  ------------------
  ------------------
29129|     42|        {
29130|     42|            flush();
29131|     42|        }
29132|  44.6k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29133|  44.6k|        write_buffer_pos += length;
29134|  44.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13ascii_escapesEv:
29208|  48.8k|    {
29209|  48.8k|        static const std::array<std::array<char, 8>, 0x60> escapes =
29210|  48.8k|        {
29211|  48.8k|            {
29212|  48.8k|                {{'\\', 'u', '0', '0', '0', '0', 0, 6}}, // 0x00
29213|  48.8k|                {{'\\', 'u', '0', '0', '0', '1', 0, 6}}, // 0x01
29214|  48.8k|                {{'\\', 'u', '0', '0', '0', '2', 0, 6}}, // 0x02
29215|  48.8k|                {{'\\', 'u', '0', '0', '0', '3', 0, 6}}, // 0x03
29216|  48.8k|                {{'\\', 'u', '0', '0', '0', '4', 0, 6}}, // 0x04
29217|  48.8k|                {{'\\', 'u', '0', '0', '0', '5', 0, 6}}, // 0x05
29218|  48.8k|                {{'\\', 'u', '0', '0', '0', '6', 0, 6}}, // 0x06
29219|  48.8k|                {{'\\', 'u', '0', '0', '0', '7', 0, 6}}, // 0x07
29220|  48.8k|                {{'\\', 'b', 0, 0, 0, 0, 0, 2}}, // 0x08
29221|  48.8k|                {{'\\', 't', 0, 0, 0, 0, 0, 2}}, // 0x09
29222|  48.8k|                {{'\\', 'n', 0, 0, 0, 0, 0, 2}}, // 0x0A
29223|  48.8k|                {{'\\', 'u', '0', '0', '0', 'b', 0, 6}}, // 0x0B
29224|  48.8k|                {{'\\', 'f', 0, 0, 0, 0, 0, 2}}, // 0x0C
29225|  48.8k|                {{'\\', 'r', 0, 0, 0, 0, 0, 2}}, // 0x0D
29226|  48.8k|                {{'\\', 'u', '0', '0', '0', 'e', 0, 6}}, // 0x0E
29227|  48.8k|                {{'\\', 'u', '0', '0', '0', 'f', 0, 6}}, // 0x0F
29228|  48.8k|                {{'\\', 'u', '0', '0', '1', '0', 0, 6}}, // 0x10
29229|  48.8k|                {{'\\', 'u', '0', '0', '1', '1', 0, 6}}, // 0x11
29230|  48.8k|                {{'\\', 'u', '0', '0', '1', '2', 0, 6}}, // 0x12
29231|  48.8k|                {{'\\', 'u', '0', '0', '1', '3', 0, 6}}, // 0x13
29232|  48.8k|                {{'\\', 'u', '0', '0', '1', '4', 0, 6}}, // 0x14
29233|  48.8k|                {{'\\', 'u', '0', '0', '1', '5', 0, 6}}, // 0x15
29234|  48.8k|                {{'\\', 'u', '0', '0', '1', '6', 0, 6}}, // 0x16
29235|  48.8k|                {{'\\', 'u', '0', '0', '1', '7', 0, 6}}, // 0x17
29236|  48.8k|                {{'\\', 'u', '0', '0', '1', '8', 0, 6}}, // 0x18
29237|  48.8k|                {{'\\', 'u', '0', '0', '1', '9', 0, 6}}, // 0x19
29238|  48.8k|                {{'\\', 'u', '0', '0', '1', 'a', 0, 6}}, // 0x1A
29239|  48.8k|                {{'\\', 'u', '0', '0', '1', 'b', 0, 6}}, // 0x1B
29240|  48.8k|                {{'\\', 'u', '0', '0', '1', 'c', 0, 6}}, // 0x1C
29241|  48.8k|                {{'\\', 'u', '0', '0', '1', 'd', 0, 6}}, // 0x1D
29242|  48.8k|                {{'\\', 'u', '0', '0', '1', 'e', 0, 6}}, // 0x1E
29243|  48.8k|                {{'\\', 'u', '0', '0', '1', 'f', 0, 6}}, // 0x1F
29244|  48.8k|                {{' ', 0, 0, 0, 0, 0, 0, 1}}, // 0x20
29245|  48.8k|                {{'!', 0, 0, 0, 0, 0, 0, 1}}, // 0x21
29246|  48.8k|                {{'\\', '"', 0, 0, 0, 0, 0, 2}}, // 0x22
29247|  48.8k|                {{'#', 0, 0, 0, 0, 0, 0, 1}}, // 0x23
29248|  48.8k|                {{'$', 0, 0, 0, 0, 0, 0, 1}}, // 0x24
29249|  48.8k|                {{'%', 0, 0, 0, 0, 0, 0, 1}}, // 0x25
29250|  48.8k|                {{'&', 0, 0, 0, 0, 0, 0, 1}}, // 0x26
29251|  48.8k|                {{'\'', 0, 0, 0, 0, 0, 0, 1}}, // 0x27
29252|  48.8k|                {{'(', 0, 0, 0, 0, 0, 0, 1}}, // 0x28
29253|  48.8k|                {{')', 0, 0, 0, 0, 0, 0, 1}}, // 0x29
29254|  48.8k|                {{'*', 0, 0, 0, 0, 0, 0, 1}}, // 0x2A
29255|  48.8k|                {{'+', 0, 0, 0, 0, 0, 0, 1}}, // 0x2B
29256|  48.8k|                {{',', 0, 0, 0, 0, 0, 0, 1}}, // 0x2C
29257|  48.8k|                {{'-', 0, 0, 0, 0, 0, 0, 1}}, // 0x2D
29258|  48.8k|                {{'.', 0, 0, 0, 0, 0, 0, 1}}, // 0x2E
29259|  48.8k|                {{'/', 0, 0, 0, 0, 0, 0, 1}}, // 0x2F
29260|  48.8k|                {{'0', 0, 0, 0, 0, 0, 0, 1}}, // 0x30
29261|  48.8k|                {{'1', 0, 0, 0, 0, 0, 0, 1}}, // 0x31
29262|  48.8k|                {{'2', 0, 0, 0, 0, 0, 0, 1}}, // 0x32
29263|  48.8k|                {{'3', 0, 0, 0, 0, 0, 0, 1}}, // 0x33
29264|  48.8k|                {{'4', 0, 0, 0, 0, 0, 0, 1}}, // 0x34
29265|  48.8k|                {{'5', 0, 0, 0, 0, 0, 0, 1}}, // 0x35
29266|  48.8k|                {{'6', 0, 0, 0, 0, 0, 0, 1}}, // 0x36
29267|  48.8k|                {{'7', 0, 0, 0, 0, 0, 0, 1}}, // 0x37
29268|  48.8k|                {{'8', 0, 0, 0, 0, 0, 0, 1}}, // 0x38
29269|  48.8k|                {{'9', 0, 0, 0, 0, 0, 0, 1}}, // 0x39
29270|  48.8k|                {{':', 0, 0, 0, 0, 0, 0, 1}}, // 0x3A
29271|  48.8k|                {{';', 0, 0, 0, 0, 0, 0, 1}}, // 0x3B
29272|  48.8k|                {{'<', 0, 0, 0, 0, 0, 0, 1}}, // 0x3C
29273|  48.8k|                {{'=', 0, 0, 0, 0, 0, 0, 1}}, // 0x3D
29274|  48.8k|                {{'>', 0, 0, 0, 0, 0, 0, 1}}, // 0x3E
29275|  48.8k|                {{'?', 0, 0, 0, 0, 0, 0, 1}}, // 0x3F
29276|  48.8k|                {{'@', 0, 0, 0, 0, 0, 0, 1}}, // 0x40
29277|  48.8k|                {{'A', 0, 0, 0, 0, 0, 0, 1}}, // 0x41
29278|  48.8k|                {{'B', 0, 0, 0, 0, 0, 0, 1}}, // 0x42
29279|  48.8k|                {{'C', 0, 0, 0, 0, 0, 0, 1}}, // 0x43
29280|  48.8k|                {{'D', 0, 0, 0, 0, 0, 0, 1}}, // 0x44
29281|  48.8k|                {{'E', 0, 0, 0, 0, 0, 0, 1}}, // 0x45
29282|  48.8k|                {{'F', 0, 0, 0, 0, 0, 0, 1}}, // 0x46
29283|  48.8k|                {{'G', 0, 0, 0, 0, 0, 0, 1}}, // 0x47
29284|  48.8k|                {{'H', 0, 0, 0, 0, 0, 0, 1}}, // 0x48
29285|  48.8k|                {{'I', 0, 0, 0, 0, 0, 0, 1}}, // 0x49
29286|  48.8k|                {{'J', 0, 0, 0, 0, 0, 0, 1}}, // 0x4A
29287|  48.8k|                {{'K', 0, 0, 0, 0, 0, 0, 1}}, // 0x4B
29288|  48.8k|                {{'L', 0, 0, 0, 0, 0, 0, 1}}, // 0x4C
29289|  48.8k|                {{'M', 0, 0, 0, 0, 0, 0, 1}}, // 0x4D
29290|  48.8k|                {{'N', 0, 0, 0, 0, 0, 0, 1}}, // 0x4E
29291|  48.8k|                {{'O', 0, 0, 0, 0, 0, 0, 1}}, // 0x4F
29292|  48.8k|                {{'P', 0, 0, 0, 0, 0, 0, 1}}, // 0x50
29293|  48.8k|                {{'Q', 0, 0, 0, 0, 0, 0, 1}}, // 0x51
29294|  48.8k|                {{'R', 0, 0, 0, 0, 0, 0, 1}}, // 0x52
29295|  48.8k|                {{'S', 0, 0, 0, 0, 0, 0, 1}}, // 0x53
29296|  48.8k|                {{'T', 0, 0, 0, 0, 0, 0, 1}}, // 0x54
29297|  48.8k|                {{'U', 0, 0, 0, 0, 0, 0, 1}}, // 0x55
29298|  48.8k|                {{'V', 0, 0, 0, 0, 0, 0, 1}}, // 0x56
29299|  48.8k|                {{'W', 0, 0, 0, 0, 0, 0, 1}}, // 0x57
29300|  48.8k|                {{'X', 0, 0, 0, 0, 0, 0, 1}}, // 0x58
29301|  48.8k|                {{'Y', 0, 0, 0, 0, 0, 0, 1}}, // 0x59
29302|  48.8k|                {{'Z', 0, 0, 0, 0, 0, 0, 1}}, // 0x5A
29303|  48.8k|                {{'[', 0, 0, 0, 0, 0, 0, 1}}, // 0x5B
29304|  48.8k|                {{'\\', '\\', 0, 0, 0, 0, 0, 2}}, // 0x5C
29305|  48.8k|                {{']', 0, 0, 0, 0, 0, 0, 1}}, // 0x5D
29306|  48.8k|                {{'^', 0, 0, 0, 0, 0, 0, 1}}, // 0x5E
29307|  48.8k|                {{'_', 0, 0, 0, 0, 0, 0, 1}}, // 0x5F
29308|  48.8k|            }
29309|  48.8k|        };
29310|  48.8k|        return escapes;
29311|  48.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6decodeERhRjh:
 6798|   115k|{
 6799|   115k|    static const std::array<std::uint8_t, 400> utf8d =
 6800|   115k|    {
 6801|   115k|        {
 6802|   115k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
 6803|   115k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
 6804|   115k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
 6805|   115k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
 6806|   115k|            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
 6807|   115k|            7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
 6808|   115k|            8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
 6809|   115k|            0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
 6810|   115k|            0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
 6811|   115k|            0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
 6812|   115k|            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
 6813|   115k|            1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
 6814|   115k|            1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
 6815|   115k|            1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
 6816|   115k|        }
 6817|   115k|    };
 6818|       |
 6819|   115k|    JSON_ASSERT(static_cast<std::size_t>(byte) < utf8d.size());
  ------------------
  |  | 2591|   115k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (6819:5): [True: 115k, False: 0]
  ------------------
 6820|   115k|    const std::uint8_t type = utf8d[byte];
 6821|       |
 6822|   115k|    codep = (state != UTF8_ACCEPT)
  ------------------
  |  Branch (6822:13): [True: 43.0k, False: 72.1k]
  ------------------
 6823|   115k|            ? (byte & 0x3fu) | (codep << 6u)
 6824|   115k|            : (0xFFu >> type) & (byte);
 6825|       |
 6826|   115k|    const std::size_t index = 256u + (static_cast<std::size_t>(state) * 16u) + static_cast<std::size_t>(type);
 6827|   115k|    JSON_ASSERT(index < utf8d.size());
  ------------------
  |  | 2591|   115k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (6827:5): [True: 115k, False: 0]
  ------------------
 6828|   115k|    state = utf8d[index];
 6829|   115k|    return state;
 6830|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_S9_RKS9_EEET_DpOT0_:
 5318|  1.32k|{
 5319|  1.32k|    OutStringType str;
 5320|  1.32k|    str.reserve(concat_length(args...));
 5321|  1.32k|    concat_into(str, std::forward<Args>(args)...);
 5322|  1.32k|    return str;
 5323|  1.32k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_S9_EEEmRKT_DpRKT0_:
 5228|  1.32k|{
 5229|  1.32k|    return str.size() + concat_length(rest...);
 5230|  1.32k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_EEEmRKT_DpRKT0_:
 5228|  18.7k|{
 5229|  18.7k|    return str.size() + concat_length(rest...);
 5230|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJEEEmRKT_DpRKT0_:
 5228|  57.2k|{
 5229|  57.2k|    return str.size() + concat_length(rest...);
 5230|  57.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthEv:
 5204|  75.9k|{
 5205|  75.9k|    return 0;
 5206|  75.9k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  1.32k|{
 5282|  1.32k|    out.append(std::forward<Arg>(arg));
 5283|  1.32k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.32k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  18.7k|{
 5282|  18.7k|    out.append(std::forward<Arg>(arg));
 5283|  18.7k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  36.1k|{
 5282|  36.1k|    out.append(std::forward<Arg>(arg));
 5283|  36.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  36.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvRT_:
 5234|  75.9k|{}
_ZN8nlohmann16json_abi_v3_12_06detail9exception4nameERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEi:
 5446|  18.7k|    {
 5447|  18.7k|        return concat("[json.exception.", ename, '.', std::to_string(id_), "] ");
 5448|  18.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA17_KcRKS9_cS9_RA3_SA_EEET_DpOT0_:
 5318|  18.7k|{
 5319|  18.7k|    OutStringType str;
 5320|  18.7k|    str.reserve(concat_length(args...));
 5321|  18.7k|    concat_into(str, std::forward<Args>(args)...);
 5322|  18.7k|    return str;
 5323|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcS9_A3_cEEEmPKcDpRKT_:
 5222|  18.7k|{
 5223|  18.7k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cEEEmRKT_DpRKT0_:
 5228|  18.7k|{
 5229|  18.7k|    return str.size() + concat_length(rest...);
 5230|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cEEEmcDpRKT_:
 5216|  18.7k|{
 5217|  18.7k|    return 1 + concat_length(rest...);
 5218|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cEEEmRKT_DpRKT0_:
 5228|  18.7k|{
 5229|  18.7k|    return str.size() + concat_length(rest...);
 5230|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJEEEmPKcDpRKT_:
 5222|  18.7k|{
 5223|  18.7k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA17_KcJRKS9_cS9_RA3_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  18.7k|{
 5282|  18.7k|    out.append(std::forward<Arg>(arg));
 5283|  18.7k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JcS9_RA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  18.7k|{
 5282|  18.7k|    out.append(std::forward<Arg>(arg));
 5283|  18.7k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJS9_RA3_KcETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISE_SF_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5290|  18.7k|{
 5291|  18.7k|    out += std::forward<Arg>(arg);
 5292|  18.7k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  18.7k|{
 5282|  18.7k|    out.append(std::forward<Arg>(arg));
 5283|  18.7k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  18.7k|{
 5282|  18.7k|    out.append(std::forward<Arg>(arg));
 5283|  18.7k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  18.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsEDn:
 5451|  17.4k|    {
 5452|  17.4k|        return "";
 5453|  17.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exceptionC2EiPKc:
 5443|  18.7k|    exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
_ZNK8nlohmann16json_abi_v3_12_06detail9exception4whatEv:
 5434|  12.4k|    {
 5435|  12.4k|        return m.what();
 5436|  12.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  38.5k|{
 5223|  38.5k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  38.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA5_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|    660|{
 5282|    660|    out.append(std::forward<Arg>(arg));
 5283|    660|    concat_into(out, std::forward<Args>(rest)...);
 5284|    660|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSB_OSC_DpOT1_:
 5281|  21.0k|{
 5282|  21.0k|    out.append(std::forward<Arg>(arg));
 5283|  21.0k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  21.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail8hex_byteEh:
 6692|  4.78k|{
 6693|  4.78k|    std::string result = "00";
 6694|  4.78k|    constexpr const char* nibble_to_hex = "0123456789ABCDEF";
 6695|  4.78k|    result[0] = nibble_to_hex[byte / 16];
 6696|  4.78k|    result[1] = nibble_to_hex[byte % 16];
 6697|  4.78k|    return result;
 6698|  4.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_escaped_implILb0EEEvRKSC_:
28684|   109k|    {
28685|   109k|        std::uint32_t codepoint{};
28686|   109k|        std::uint8_t state = UTF8_ACCEPT;
28687|   109k|        std::size_t bytes = 0;  // number of bytes written to string_buffer
28688|       |
28689|       |        // number of bytes written at the point of the last valid byte
28690|   109k|        std::size_t bytes_after_last_accept = 0;
28691|   109k|        std::size_t undumped_chars = 0;
28692|       |
28693|   273k|        for (std::size_t i = 0; i < s.size(); ++i)
  ------------------
  |  Branch (28693:33): [True: 188k, False: 85.0k]
  ------------------
28694|   188k|        {
28695|       |            // Fast path: at a character boundary (state == UTF8_ACCEPT),
28696|       |            // bulk-copy the longest run of bytes that need no escaping using a
28697|       |            // SWAR scanner shared with the lexer's contiguous path. The scanner
28698|       |            // stops exactly at the first byte dump_escaped would handle
28699|       |            // individually, so that byte is left to the byte-at-a-time path
28700|       |            // below, keeping escaping output and error diagnostics unchanged.
28701|       |            //
28702|       |            // - EnsureAscii == false: string_bulk_run() copies ordinary bytes
28703|       |            //   and complete well-formed UTF-8, stopping at a quote, backslash,
28704|       |            //   control character (< 0x20), or ill-formed/truncated sequence.
28705|       |            // - EnsureAscii == true: only printable ASCII may be copied
28706|       |            //   verbatim; find_ascii_copyable_run() additionally stops at 0x7F
28707|       |            //   and every non-ASCII byte (>= 0x80), which must be \u-escaped.
28708|   188k|            if (state == UTF8_ACCEPT)
  ------------------
  |  Branch (28708:17): [True: 145k, False: 43.0k]
  ------------------
28709|   145k|            {
28710|   145k|                const auto* const data = reinterpret_cast<const unsigned char*>(s.data());
28711|       |                // A run can only be non-empty when the very first byte is one
28712|       |                // the scanner may copy, so test that single byte before paying
28713|       |                // for the scan. Without it, text whose characters all have to be
28714|       |                // escaped - CJK under ensure_ascii, where every byte is >= 0x80 -
28715|       |                // runs the scanner once per character only to be told zero.
28716|   145k|                std::size_t run = 0;
28717|   145k|                if (!EnsureAscii)
  ------------------
  |  Branch (28717:21): [True: 145k, Folded]
  ------------------
28718|   145k|                {
28719|   145k|                    run = string_bulk_run(data + i, s.size() - i);
28720|   145k|                }
28721|      0|                else if (is_ascii_copyable(data[i]))
  ------------------
  |  Branch (28721:26): [True: 0, False: 0]
  ------------------
28722|      0|                {
28723|      0|                    run = find_ascii_copyable_run(data + i, s.size() - i);
28724|      0|                }
28725|   145k|                if (run != 0)
  ------------------
  |  Branch (28725:21): [True: 44.6k, False: 101k]
  ------------------
28726|  44.6k|                {
28727|       |                    // emit any bytes still pending in string_buffer first to
28728|       |                    // preserve output order, then write the run directly
28729|  44.6k|                    if (bytes != 0)
  ------------------
  |  Branch (28729:25): [True: 12.0k, False: 32.5k]
  ------------------
28730|  12.0k|                    {
28731|  12.0k|                        put_buffer(string_buffer, bytes);
28732|  12.0k|                        bytes = 0;
28733|  12.0k|                    }
28734|  44.6k|                    put_string(s, i, i + run);
28735|  44.6k|                    bytes_after_last_accept = 0;
28736|  44.6k|                    undumped_chars = 0;
28737|  44.6k|                    i += run;
28738|  44.6k|                    if (i >= s.size())
  ------------------
  |  Branch (28738:25): [True: 24.8k, False: 19.7k]
  ------------------
28739|  24.8k|                    {
28740|  24.8k|                        break;
28741|  24.8k|                    }
28742|  44.6k|                }
28743|       |
28744|       |                // A byte below 0x60 is a complete code point and needs no
28745|       |                // UTF-8 decoding. The scanner stops only at a control
28746|       |                // character, a quote, or a backslash in that range, so look up
28747|       |                // its escape sequence and write all 8 bytes of the table entry
28748|       |                // straight into the write buffer; only the length stored in the
28749|       |                // last byte of the entry is kept.
28750|   121k|                if (data[i] < 0x60)
  ------------------
  |  Branch (28750:21): [True: 48.8k, False: 72.1k]
  ------------------
28751|  48.8k|                {
28752|       |                    // emit any bytes still pending in string_buffer first to
28753|       |                    // preserve output order
28754|  48.8k|                    if (bytes != 0)
  ------------------
  |  Branch (28754:25): [True: 6.69k, False: 42.1k]
  ------------------
28755|  6.69k|                    {
28756|  6.69k|                        put_buffer(string_buffer, bytes);
28757|  6.69k|                        bytes = 0;
28758|  6.69k|                    }
28759|  48.8k|                    const auto& escape = ascii_escapes()[data[i]];
28760|  48.8k|                    if (JSON_HEDLEY_UNLIKELY(write_buffer.size() - write_buffer_pos < escape.size()))
  ------------------
  |  | 1667|  48.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 96, False: 48.7k]
  |  |  ------------------
  ------------------
28761|     96|                    {
28762|     96|                        flush();
28763|     96|                    }
28764|  48.8k|                    std::memcpy(write_buffer.data() + write_buffer_pos, escape.data(), escape.size());
28765|  48.8k|                    write_buffer_pos += static_cast<std::size_t>(escape[7]);
28766|  48.8k|                    bytes_after_last_accept = 0;
28767|  48.8k|                    undumped_chars = 0;
28768|  48.8k|                    continue;
28769|  48.8k|                }
28770|   121k|            }
28771|       |
28772|   115k|            const auto byte = static_cast<std::uint8_t>(s[i]);
28773|       |
28774|   115k|            switch (decode(state, codepoint, byte))
28775|   115k|            {
28776|      0|                case UTF8_ACCEPT:  // decode found a new code point
  ------------------
  |  Branch (28776:17): [True: 0, False: 115k]
  ------------------
28777|      0|                {
28778|       |                    // the code point is at least 0x60 (smaller ones are handled
28779|       |                    // above) and is not printable ASCII (which the scanner
28780|       |                    // copies): it is DEL (0x7F) under EnsureAscii or a non-ASCII
28781|       |                    // character
28782|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28782:25): [Folded, False: 0]
  ------------------
28783|      0|                    {
28784|      0|                        JSON_ASSERT(codepoint >= 0x7F);
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28784:25): [True: 0, False: 0]
  ------------------
28785|      0|                        if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28785:29): [True: 0, False: 0]
  ------------------
28786|      0|                        {
28787|       |                            // this character was buffered as raw bytes below
28788|       |                            // in case it turned out to be part of an
28789|       |                            // ill-formed sequence (which is kept as is); now
28790|       |                            // that it decoded to a well-formed code point,
28791|       |                            // undo that and \u-escape it like any other
28792|       |                            // character instead
28793|      0|                            bytes = bytes_after_last_accept;
28794|      0|                        }
28795|      0|                        if (codepoint <= 0xFFFF)
  ------------------
  |  Branch (28795:29): [True: 0, False: 0]
  ------------------
28796|      0|                        {
28797|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(codepoint));
28798|      0|                        }
28799|      0|                        else
28800|      0|                        {
28801|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)));
28802|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
28803|      0|                        }
28804|      0|                    }
28805|      0|                    else
28806|      0|                    {
28807|       |                        // copy byte to buffer (all previous bytes of the
28808|       |                        // sequence have been copied in the default case below)
28809|      0|                        string_buffer[bytes++] = s[i];
28810|      0|                    }
28811|       |
28812|       |                    // write buffer and reset index; there must be 13 bytes
28813|       |                    // left, as this is the maximal number of bytes to be
28814|       |                    // written ("\uxxxx\uxxxx\0") for one code point
28815|      0|                    if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28815:25): [True: 0, False: 0]
  ------------------
28816|      0|                    {
28817|      0|                        put_buffer(string_buffer, bytes);
28818|      0|                        bytes = 0;
28819|      0|                    }
28820|       |
28821|       |                    // remember the byte position of this accept
28822|      0|                    bytes_after_last_accept = bytes;
28823|      0|                    undumped_chars = 0;
28824|      0|                    break;
28825|      0|                }
28826|       |
28827|  65.6k|                case UTF8_REJECT:  // decode found invalid UTF-8 byte
  ------------------
  |  Branch (28827:17): [True: 65.6k, False: 49.5k]
  ------------------
28828|  65.6k|                {
28829|  65.6k|                    switch (error_handler)
28830|  65.6k|                    {
28831|      0|                        case error_handler_t::strict:
  ------------------
  |  Branch (28831:25): [True: 0, False: 65.6k]
  ------------------
28832|      0|                        {
28833|      0|                            JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("invalid UTF-8 byte at index ", std::to_string(i), ": 0x", detail::hex_byte(byte)), nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28834|      0|                        }
28835|       |
28836|      0|                        case error_handler_t::ignore:
  ------------------
  |  Branch (28836:25): [True: 0, False: 65.6k]
  ------------------
28837|      0|                        case error_handler_t::replace:
  ------------------
  |  Branch (28837:25): [True: 0, False: 65.6k]
  ------------------
28838|      0|                        {
28839|       |                            // in case we saw this character the first time, we
28840|       |                            // would like to read it again, because the byte
28841|       |                            // may be OK for itself, but just not OK for the
28842|       |                            // previous sequence
28843|      0|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28843:33): [True: 0, False: 0]
  ------------------
28844|      0|                            {
28845|      0|                                --i;
28846|      0|                            }
28847|       |
28848|       |                            // reset length buffer to the last accepted index;
28849|       |                            // thus removing/ignoring the invalid characters
28850|      0|                            bytes = bytes_after_last_accept;
28851|       |
28852|      0|                            if (error_handler == error_handler_t::replace)
  ------------------
  |  Branch (28852:33): [True: 0, False: 0]
  ------------------
28853|      0|                            {
28854|       |                                // add a replacement character
28855|      0|                                if (EnsureAscii)
  ------------------
  |  Branch (28855:37): [Folded, False: 0]
  ------------------
28856|      0|                                {
28857|      0|                                    string_buffer[bytes++] = '\\';
28858|      0|                                    string_buffer[bytes++] = 'u';
28859|      0|                                    string_buffer[bytes++] = 'f';
28860|      0|                                    string_buffer[bytes++] = 'f';
28861|      0|                                    string_buffer[bytes++] = 'f';
28862|      0|                                    string_buffer[bytes++] = 'd';
28863|      0|                                }
28864|      0|                                else
28865|      0|                                {
28866|      0|                                    string_buffer[bytes++] = '\xEF';
28867|      0|                                    string_buffer[bytes++] = '\xBF';
28868|      0|                                    string_buffer[bytes++] = '\xBD';
28869|      0|                                }
28870|       |
28871|       |                                // write buffer and reset index; there must be 13 bytes
28872|       |                                // left, as this is the maximal number of bytes to be
28873|       |                                // written ("\uxxxx\uxxxx\0") for one code point
28874|      0|                                if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28874:37): [True: 0, False: 0]
  ------------------
28875|      0|                                {
28876|      0|                                    put_buffer(string_buffer, bytes);
28877|      0|                                    bytes = 0;
28878|      0|                                }
28879|       |
28880|      0|                                bytes_after_last_accept = bytes;
28881|      0|                            }
28882|       |
28883|      0|                            undumped_chars = 0;
28884|       |
28885|       |                            // continue processing the string
28886|      0|                            state = UTF8_ACCEPT;
28887|      0|                            break;
28888|      0|                        }
28889|       |
28890|  65.6k|                        case error_handler_t::keep:
  ------------------
  |  Branch (28890:25): [True: 65.6k, False: 0]
  ------------------
28891|  65.6k|                        {
28892|       |                            // the bytes of this (now abandoned) ill-formed
28893|       |                            // sequence seen so far are already buffered below
28894|       |                            // and are kept unchanged in the output
28895|  65.6k|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28895:33): [True: 32.1k, False: 33.5k]
  ------------------
28896|  32.1k|                            {
28897|       |                                // the byte that ended the sequence may be OK
28898|       |                                // for itself (e.g., a quote that must still be
28899|       |                                // escaped, or the lead byte of a well-formed
28900|       |                                // code point), so read it again
28901|  32.1k|                                --i;
28902|  32.1k|                            }
28903|  33.5k|                            else
28904|  33.5k|                            {
28905|       |                                // a byte that cannot start a sequence (e.g.,
28906|       |                                // 0xFF or a stray continuation byte) is kept
28907|       |                                // as well
28908|  33.5k|                                string_buffer[bytes++] = s[i];
28909|  33.5k|                            }
28910|       |
28911|       |                            // write buffer and reset index; there must be 13 bytes
28912|       |                            // left, as this is the maximal number of bytes to be
28913|       |                            // written ("\uxxxx\uxxxx\0") for one code point
28914|  65.6k|                            if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28914:33): [True: 0, False: 65.6k]
  ------------------
28915|      0|                            {
28916|      0|                                put_buffer(string_buffer, bytes);
28917|      0|                                bytes = 0;
28918|      0|                            }
28919|       |
28920|  65.6k|                            bytes_after_last_accept = bytes;
28921|  65.6k|                            undumped_chars = 0;
28922|       |
28923|       |                            // continue processing the string
28924|  65.6k|                            state = UTF8_ACCEPT;
28925|  65.6k|                            break;
28926|      0|                        }
28927|       |
28928|      0|                        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28928:25): [True: 0, False: 65.6k]
  ------------------
28929|      0|                            JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28929:29): [Folded, False: 0]
  ------------------
28930|  65.6k|                    }
28931|  65.6k|                    break;
28932|  65.6k|                }
28933|       |
28934|  65.6k|                default:  // decode found yet incomplete multibyte code point
  ------------------
  |  Branch (28934:17): [True: 49.5k, False: 65.6k]
  ------------------
28935|  49.5k|                {
28936|  49.5k|                    if (!EnsureAscii || error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28936:25): [True: 49.5k, Folded]
  |  Branch (28936:41): [True: 0, False: 0]
  ------------------
28937|  49.5k|                    {
28938|       |                        // code point will not be escaped (or will be kept as
28939|       |                        // is if it turns out to be ill-formed) - copy byte to
28940|       |                        // buffer; dropped again above if it decodes to a
28941|       |                        // well-formed code point that needs \u-escaping
28942|  49.5k|                        string_buffer[bytes++] = s[i];
28943|  49.5k|                    }
28944|  49.5k|                    ++undumped_chars;
28945|  49.5k|                    break;
28946|  65.6k|                }
28947|   115k|            }
28948|   115k|        }
28949|       |
28950|       |        // we finished processing the string
28951|   109k|        if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
  ------------------
  |  | 1666|   109k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 103k, False: 6.55k]
  |  |  ------------------
  ------------------
28952|   103k|        {
28953|       |            // write buffer
28954|   103k|            if (bytes > 0)
  ------------------
  |  Branch (28954:17): [True: 6.49k, False: 96.9k]
  ------------------
28955|  6.49k|            {
28956|  6.49k|                put_buffer(string_buffer, bytes);
28957|  6.49k|            }
28958|   103k|        }
28959|  6.55k|        else
28960|  6.55k|        {
28961|       |            // we finish reading, but do not accept: string was incomplete
28962|  6.55k|            switch (error_handler)
28963|  6.55k|            {
28964|      0|                case error_handler_t::strict:
  ------------------
  |  Branch (28964:17): [True: 0, False: 6.55k]
  ------------------
28965|      0|                {
28966|      0|                    JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("incomplete UTF-8 string; last byte: 0x", detail::hex_byte(static_cast<std::uint8_t>(s[s.size() - 1]))), nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28967|      0|                }
28968|       |
28969|      0|                case error_handler_t::ignore:
  ------------------
  |  Branch (28969:17): [True: 0, False: 6.55k]
  ------------------
28970|      0|                {
28971|       |                    // write all accepted bytes
28972|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28973|      0|                    break;
28974|      0|                }
28975|       |
28976|      0|                case error_handler_t::replace:
  ------------------
  |  Branch (28976:17): [True: 0, False: 6.55k]
  ------------------
28977|      0|                {
28978|       |                    // write all accepted bytes
28979|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28980|       |                    // add a replacement character
28981|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28981:25): [Folded, False: 0]
  ------------------
28982|      0|                    {
28983|      0|                        put_literal("\\ufffd");
28984|      0|                    }
28985|      0|                    else
28986|      0|                    {
28987|      0|                        put_literal("\xEF\xBF\xBD");
28988|      0|                    }
28989|      0|                    break;
28990|      0|                }
28991|       |
28992|  6.55k|                case error_handler_t::keep:
  ------------------
  |  Branch (28992:17): [True: 6.55k, False: 0]
  ------------------
28993|  6.55k|                {
28994|       |                    // write the ill-formed trailing bytes as is; they were
28995|       |                    // buffered above regardless of EnsureAscii
28996|  6.55k|                    put_buffer(string_buffer, bytes);
28997|  6.55k|                    break;
28998|      0|                }
28999|       |
29000|      0|                default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (29000:17): [True: 0, False: 6.55k]
  ------------------
29001|       |                    JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29001:21): [Folded, False: 0]
  ------------------
29002|  6.55k|            }
29003|  6.55k|        }
29004|   109k|    }
_ZN8nlohmann16json_abi_v3_12_06detail15string_bulk_runEPKhm:
11148|   145k|{
11149|       |#if defined(JSON_USE_SIMDUTF) && defined(JSON_HAS_CPP_17)
11150|       |    const std::size_t run = find_string_delimiter(data, n);
11151|       |    if (run != 0 && simdutf::validate_utf8(reinterpret_cast<const char*>(data), run))
11152|       |    {
11153|       |        return run;
11154|       |    }
11155|       |#endif
11156|   145k|    return scalar_string_bulk_run(data, n);
11157|   145k|}
_ZN8nlohmann16json_abi_v3_12_06detail22scalar_string_bulk_runEPKhm:
11084|   145k|{
11085|   145k|    std::size_t pos = 0;
11086|   148k|    while (pos < n)
  ------------------
  |  Branch (11086:12): [True: 147k, False: 1.45k]
  ------------------
11087|   147k|    {
11088|   147k|        pos += find_string_special(data + pos, n - pos);
11089|   147k|        if (pos >= n || data[pos] < 0x80u)
  ------------------
  |  Branch (11089:13): [True: 23.4k, False: 123k]
  |  Branch (11089:25): [True: 48.8k, False: 75.1k]
  ------------------
11090|  72.2k|        {
11091|  72.2k|            break; // end of buffer, or a quote/escape/control byte
11092|  72.2k|        }
11093|       |        // a run of multi-byte sequences (e.g. CJK text) is validated sequence
11094|       |        // by sequence without searching for the next special byte in between
11095|  75.1k|        do
11096|  77.0k|        {
11097|  77.0k|            const std::size_t seq = validate_one_utf8(data + pos, n - pos);
11098|  77.0k|            if (seq == 0)
  ------------------
  |  Branch (11098:17): [True: 72.1k, False: 4.83k]
  ------------------
11099|  72.1k|            {
11100|  72.1k|                return pos; // ill-formed or truncated: let the byte path diagnose it
11101|  72.1k|            }
11102|  4.83k|            pos += seq;
11103|  4.83k|        }
11104|  75.1k|        while (pos < n && data[pos] >= 0x80u);
  ------------------
  |  Branch (11104:16): [True: 3.38k, False: 1.45k]
  |  Branch (11104:27): [True: 1.85k, False: 1.53k]
  ------------------
11105|  75.1k|    }
11106|  73.7k|    return pos;
11107|   145k|}
_ZN8nlohmann16json_abi_v3_12_06detail19find_string_specialEPKhm:
10910|   147k|{
10911|   147k|    std::size_t i = 0;
10912|   151k|    for (; i + 8 <= n; i += 8)
  ------------------
  |  Branch (10912:12): [True: 74.1k, False: 77.3k]
  ------------------
10913|  74.1k|    {
10914|  74.1k|        const std::uint64_t special = swar_string_special(read_eight_bytes(data + i));
10915|  74.1k|        if (special != 0)
  ------------------
  |  Branch (10915:13): [True: 70.1k, False: 4.00k]
  ------------------
10916|  70.1k|        {
10917|       |            // the lowest flagged byte is the first special one: the borrows of
10918|       |            // the subtractions can only flag bytes above a true hit
10919|  70.1k|            return i + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
10920|  70.1k|        }
10921|  74.1k|    }
10922|   116k|    for (; i < n; ++i)
  ------------------
  |  Branch (10922:12): [True: 92.7k, False: 23.4k]
  ------------------
10923|  92.7k|    {
10924|  92.7k|        if (is_string_special(data[i]))
  ------------------
  |  Branch (10924:13): [True: 53.8k, False: 38.8k]
  ------------------
10925|  53.8k|        {
10926|  53.8k|            return i;
10927|  53.8k|        }
10928|  92.7k|    }
10929|  23.4k|    return n;
10930|  77.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail19swar_string_specialEm:
10895|  74.1k|{
10896|  74.1k|    constexpr std::uint64_t ones = 0x0101010101010101ull;
10897|  74.1k|    constexpr std::uint64_t high = 0x8080808080808080ull;
10898|  74.1k|    const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'  (0x22)
10899|  74.1k|    const std::uint64_t b = v ^ 0x5C5C5C5C5C5C5C5Cull; // '\\' (0x5C)
10900|  74.1k|    const std::uint64_t has_quote     = (q - ones) & ~q & high;
10901|  74.1k|    const std::uint64_t has_backslash = (b - ones) & ~b & high;
10902|  74.1k|    const std::uint64_t has_control   = (v - 0x2020202020202020ull) & ~v & high; // < 0x20
10903|  74.1k|    const std::uint64_t has_non_ascii = v & high;                                // >= 0x80
10904|  74.1k|    return has_quote | has_backslash | has_control | has_non_ascii;
10905|  74.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail17is_string_specialEh:
10888|  92.7k|{
10889|  92.7k|    return c == '\"' || c == '\\' || c < 0x20u || c >= 0x80u;
  ------------------
  |  Branch (10889:12): [True: 1.48k, False: 91.2k]
  |  Branch (10889:25): [True: 1.31k, False: 89.9k]
  |  Branch (10889:38): [True: 18.2k, False: 71.6k]
  |  Branch (10889:51): [True: 32.8k, False: 38.8k]
  ------------------
10890|  92.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail17validate_one_utf8EPKhm:
10987|  77.0k|{
10988|  77.0k|    const unsigned char c0 = data[0];
10989|  77.0k|    if (c0 >= 0xC2 && c0 <= 0xDF)  // U+0080..U+07FF
  ------------------
  |  Branch (10989:9): [True: 58.8k, False: 18.1k]
  |  Branch (10989:23): [True: 7.76k, False: 51.0k]
  ------------------
10990|  7.76k|    {
10991|  7.76k|        if (avail >= 2 && data[1] >= 0x80 && data[1] <= 0xBF)
  ------------------
  |  Branch (10991:13): [True: 5.28k, False: 2.47k]
  |  Branch (10991:27): [True: 4.17k, False: 1.11k]
  |  Branch (10991:46): [True: 1.70k, False: 2.47k]
  ------------------
10992|  1.70k|        {
10993|  1.70k|            return 2;
10994|  1.70k|        }
10995|  7.76k|    }
10996|  69.2k|    else if (c0 == 0xE0)  // U+0800..U+0FFF
  ------------------
  |  Branch (10996:14): [True: 4.33k, False: 64.9k]
  ------------------
10997|  4.33k|    {
10998|  4.33k|        if (avail >= 3 && data[1] >= 0xA0 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (10998:13): [True: 3.46k, False: 864]
  |  Branch (10998:27): [True: 2.69k, False: 774]
  |  Branch (10998:46): [True: 1.45k, False: 1.24k]
  |  Branch (10998:65): [True: 564, False: 888]
  |  Branch (10998:84): [True: 456, False: 108]
  ------------------
10999|    456|        {
11000|    456|            return 3;
11001|    456|        }
11002|  4.33k|    }
11003|  64.9k|    else if ((c0 >= 0xE1 && c0 <= 0xEC) || c0 == 0xEE || c0 == 0xEF)  // U+1000..U+CFFF, U+E000..U+FFFF
  ------------------
  |  Branch (11003:15): [True: 46.7k, False: 18.1k]
  |  Branch (11003:29): [True: 4.56k, False: 42.1k]
  |  Branch (11003:44): [True: 1.47k, False: 58.8k]
  |  Branch (11003:58): [True: 2.23k, False: 56.6k]
  ------------------
11004|  8.27k|    {
11005|  8.27k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11005:13): [True: 6.20k, False: 2.07k]
  |  Branch (11005:27): [True: 4.86k, False: 1.34k]
  |  Branch (11005:46): [True: 972, False: 3.88k]
  |  Branch (11005:65): [True: 696, False: 276]
  |  Branch (11005:84): [True: 486, False: 210]
  ------------------
11006|    486|        {
11007|    486|            return 3;
11008|    486|        }
11009|  8.27k|    }
11010|  56.6k|    else if (c0 == 0xED)  // U+D000..U+D7FF (excludes surrogates)
  ------------------
  |  Branch (11010:14): [True: 4.05k, False: 52.5k]
  ------------------
11011|  4.05k|    {
11012|  4.05k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0x9F && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11012:13): [True: 3.58k, False: 474]
  |  Branch (11012:27): [True: 2.77k, False: 804]
  |  Branch (11012:46): [True: 1.44k, False: 1.33k]
  |  Branch (11012:65): [True: 1.33k, False: 102]
  |  Branch (11012:84): [True: 1.12k, False: 210]
  ------------------
11013|  1.12k|        {
11014|  1.12k|            return 3;
11015|  1.12k|        }
11016|  4.05k|    }
11017|  52.5k|    else if (c0 == 0xF0)  // U+10000..U+3FFFF
  ------------------
  |  Branch (11017:14): [True: 4.72k, False: 47.8k]
  ------------------
11018|  4.72k|    {
11019|  4.72k|        if (avail >= 4 && data[1] >= 0x90 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11019:13): [True: 4.13k, False: 594]
  |  Branch (11019:27): [True: 3.83k, False: 300]
  |  Branch (11019:46): [True: 2.33k, False: 1.50k]
  |  Branch (11019:65): [True: 2.19k, False: 144]
  |  Branch (11019:84): [True: 690, False: 1.50k]
  |  Branch (11019:103): [True: 588, False: 102]
  |  Branch (11019:122): [True: 156, False: 432]
  ------------------
11020|    156|        {
11021|    156|            return 4;
11022|    156|        }
11023|  4.72k|    }
11024|  47.8k|    else if (c0 >= 0xF1 && c0 <= 0xF3)  // U+40000..U+FFFFF
  ------------------
  |  Branch (11024:14): [True: 29.6k, False: 18.1k]
  |  Branch (11024:28): [True: 4.54k, False: 25.1k]
  ------------------
11025|  4.54k|    {
11026|  4.54k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11026:13): [True: 2.93k, False: 1.61k]
  |  Branch (11026:27): [True: 2.65k, False: 282]
  |  Branch (11026:46): [True: 1.61k, False: 1.03k]
  |  Branch (11026:65): [True: 1.08k, False: 534]
  |  Branch (11026:84): [True: 960, False: 120]
  |  Branch (11026:103): [True: 876, False: 84]
  |  Branch (11026:122): [True: 702, False: 174]
  ------------------
11027|    702|        {
11028|    702|            return 4;
11029|    702|        }
11030|  4.54k|    }
11031|  43.3k|    else if (c0 == 0xF4)  // U+100000..U+10FFFF
  ------------------
  |  Branch (11031:14): [True: 9.79k, False: 33.5k]
  ------------------
11032|  9.79k|    {
11033|  9.79k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0x8F && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11033:13): [True: 8.25k, False: 1.53k]
  |  Branch (11033:27): [True: 6.84k, False: 1.41k]
  |  Branch (11033:46): [True: 3.33k, False: 3.51k]
  |  Branch (11033:65): [True: 2.75k, False: 576]
  |  Branch (11033:84): [True: 1.79k, False: 960]
  |  Branch (11033:103): [True: 624, False: 1.17k]
  |  Branch (11033:122): [True: 204, False: 420]
  ------------------
11034|    204|        {
11035|    204|            return 4;
11036|    204|        }
11037|  9.79k|    }
11038|  72.1k|    return 0; // invalid, incomplete, or must be diagnosed by the byte path
11039|  77.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11dump_scalarERKSG_m:
28497|   342k|    {
28498|   342k|        switch (val.m_data.m_type)
28499|   342k|        {
28500|  37.3k|            case value_t::string:
  ------------------
  |  Branch (28500:13): [True: 37.3k, False: 304k]
  ------------------
28501|  37.3k|            {
28502|  37.3k|                put_char('"');
28503|  37.3k|                dump_escaped(*val.m_data.m_value.string);
28504|  37.3k|                put_char('"');
28505|  37.3k|                return;
28506|      0|            }
28507|       |
28508|   118k|            case value_t::binary:
  ------------------
  |  Branch (28508:13): [True: 118k, False: 223k]
  ------------------
28509|   118k|            {
28510|   118k|                if (pretty_print)
  ------------------
  |  Branch (28510:21): [True: 0, False: 118k]
  ------------------
28511|      0|                {
28512|      0|                    put_literal("{\n");
28513|       |
28514|       |                    // variable to hold indentation for the bytes
28515|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28516|       |
28517|      0|                    put_indent(new_indent);
28518|       |
28519|      0|                    put_literal("\"bytes\": [");
28520|       |
28521|      0|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28521:25): [True: 0, False: 0]
  ------------------
28522|      0|                    {
28523|      0|                        for (auto i = val.m_data.m_value.binary->cbegin();
28524|      0|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28524:33): [True: 0, False: 0]
  ------------------
28525|      0|                        {
28526|      0|                            dump_byte(*i);
28527|      0|                            put_literal(", ");
28528|      0|                        }
28529|      0|                        dump_byte(val.m_data.m_value.binary->back());
28530|      0|                    }
28531|       |
28532|      0|                    put_literal("],\n");
28533|      0|                    put_indent(new_indent);
28534|       |
28535|      0|                    put_literal("\"subtype\": ");
28536|      0|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28536:25): [True: 0, False: 0]
  ------------------
28537|      0|                    {
28538|      0|                        dump_integer(val.m_data.m_value.binary->subtype());
28539|      0|                    }
28540|      0|                    else
28541|      0|                    {
28542|      0|                        put_literal("null");
28543|      0|                    }
28544|      0|                    put_char('\n');
28545|      0|                    put_indent(current_indent);
28546|      0|                    put_char('}');
28547|      0|                }
28548|   118k|                else
28549|   118k|                {
28550|   118k|                    put_literal("{\"bytes\":[");
28551|       |
28552|   118k|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28552:25): [True: 16.5k, False: 102k]
  ------------------
28553|  16.5k|                    {
28554|  16.5k|                        for (auto i = val.m_data.m_value.binary->cbegin();
28555|  80.5k|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28555:33): [True: 64.0k, False: 16.5k]
  ------------------
28556|  64.0k|                        {
28557|  64.0k|                            dump_byte(*i);
28558|  64.0k|                            put_char(',');
28559|  64.0k|                        }
28560|  16.5k|                        dump_byte(val.m_data.m_value.binary->back());
28561|  16.5k|                    }
28562|       |
28563|   118k|                    put_literal("],\"subtype\":");
28564|   118k|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28564:25): [True: 0, False: 118k]
  ------------------
28565|      0|                    {
28566|      0|                        dump_integer(val.m_data.m_value.binary->subtype());
28567|      0|                        put_char('}');
28568|      0|                    }
28569|   118k|                    else
28570|   118k|                    {
28571|   118k|                        put_literal("null}");
28572|   118k|                    }
28573|   118k|                }
28574|   118k|                return;
28575|      0|            }
28576|       |
28577|  9.31k|            case value_t::boolean:
  ------------------
  |  Branch (28577:13): [True: 9.31k, False: 332k]
  ------------------
28578|  9.31k|            {
28579|  9.31k|                if (val.m_data.m_value.boolean)
  ------------------
  |  Branch (28579:21): [True: 3.93k, False: 5.38k]
  ------------------
28580|  3.93k|                {
28581|  3.93k|                    put_literal("true");
28582|  3.93k|                }
28583|  5.38k|                else
28584|  5.38k|                {
28585|  5.38k|                    put_literal("false");
28586|  5.38k|                }
28587|  9.31k|                return;
28588|      0|            }
28589|       |
28590|  49.0k|            case value_t::number_integer:
  ------------------
  |  Branch (28590:13): [True: 49.0k, False: 293k]
  ------------------
28591|  49.0k|            {
28592|  49.0k|                dump_integer(val.m_data.m_value.number_integer);
28593|  49.0k|                return;
28594|      0|            }
28595|       |
28596|  83.9k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28596:13): [True: 83.9k, False: 258k]
  ------------------
28597|  83.9k|            {
28598|  83.9k|                dump_integer(val.m_data.m_value.number_unsigned);
28599|  83.9k|                return;
28600|      0|            }
28601|       |
28602|  37.5k|            case value_t::number_float:
  ------------------
  |  Branch (28602:13): [True: 37.5k, False: 304k]
  ------------------
28603|  37.5k|            {
28604|  37.5k|                dump_float(val.m_data.m_value.number_float);
28605|  37.5k|                return;
28606|      0|            }
28607|       |
28608|      0|            case value_t::discarded:
  ------------------
  |  Branch (28608:13): [True: 0, False: 342k]
  ------------------
28609|      0|            {
28610|      0|                put_literal("<discarded>");
28611|      0|                return;
28612|      0|            }
28613|       |
28614|  5.77k|            case value_t::null:
  ------------------
  |  Branch (28614:13): [True: 5.77k, False: 336k]
  ------------------
28615|  5.77k|            {
28616|  5.77k|                put_literal("null");
28617|  5.77k|                return;
28618|      0|            }
28619|       |
28620|      0|            case value_t::object: // LCOV_EXCL_LINE
  ------------------
  |  Branch (28620:13): [True: 0, False: 342k]
  ------------------
28621|      0|            case value_t::array:  // LCOV_EXCL_LINE
  ------------------
  |  Branch (28621:13): [True: 0, False: 342k]
  ------------------
28622|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28622:13): [True: 0, False: 342k]
  ------------------
28623|       |                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28623:17): [Folded, False: 0]
  ------------------
28624|   342k|        }
28625|   342k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm11EEEvRAT__Kc:
29090|   118k|    {
29091|   118k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|   118k|        constexpr std::size_t length = N - 1;
29094|   118k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|   118k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|   118k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 258, False: 118k]
  |  |  ------------------
  ------------------
29097|    258|        {
29098|    258|            flush();
29099|    258|        }
29100|   118k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|   118k|        write_buffer_pos += length;
29102|   118k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_:
29380|  80.5k|    {
29381|  80.5k|        dump_byte(value, std::integral_constant < bool,
29382|  80.5k|                  std::is_unsigned<ByteType>::value && sizeof(ByteType) == 1
29383|  80.5k|                  && !std::is_same<ByteType, bool>::value > {});
29384|  80.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_NS4_17integral_constantIbLb1EEE:
29394|  80.5k|    {
29395|  80.5k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + 3 > write_buffer.size()))
  ------------------
  |  | 1667|  80.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 180, False: 80.4k]
  |  |  ------------------
  ------------------
29396|    180|        {
29397|    180|            flush();
29398|    180|        }
29399|       |
29400|  80.5k|        const auto byte = static_cast<unsigned>(value);
29401|       |        // Accumulate the offset in a local and store it back once. Writing
29402|       |        // through write_buffer[] is a char write, which may alias any object,
29403|       |        // so with the member updated in place the compiler has to reload and
29404|       |        // store it around every digit - measured 2.4x slower on a dump of a
29405|       |        // multi-megabyte binary value.
29406|  80.5k|        std::size_t pos = write_buffer_pos;
29407|       |
29408|  80.5k|        if (byte >= 100)
  ------------------
  |  Branch (29408:13): [True: 14.0k, False: 66.5k]
  ------------------
29409|  14.0k|        {
29410|  14.0k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 100));
29411|  14.0k|            write_buffer[pos++] = static_cast<char>('0' + ((byte / 10) % 10));
29412|  14.0k|        }
29413|  66.5k|        else if (byte >= 10)
  ------------------
  |  Branch (29413:18): [True: 51.8k, False: 14.7k]
  ------------------
29414|  51.8k|        {
29415|  51.8k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 10));
29416|  51.8k|        }
29417|       |
29418|  80.5k|        write_buffer[pos++] = static_cast<char>('0' + (byte % 10));
29419|       |
29420|  80.5k|        write_buffer_pos = pos;
29421|  80.5k|    }
_ZNK8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE11has_subtypeEv:
 7962|   158k|    {
 7963|   158k|        return m_has_subtype;
 7964|   158k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerImTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
29439|  83.9k|    {
29440|  83.9k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|  83.9k|        {
29442|  83.9k|            {
29443|  83.9k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|  83.9k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|  83.9k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|  83.9k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|  83.9k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|  83.9k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|  83.9k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|  83.9k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|  83.9k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|  83.9k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|  83.9k|            }
29454|  83.9k|        };
29455|       |
29456|       |        // special case for "0"
29457|  83.9k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 35.9k, False: 47.9k]
  ------------------
29458|  35.9k|        {
29459|  35.9k|            put_char('0');
29460|  35.9k|            return;
29461|  35.9k|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|  47.9k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  47.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 156, False: 47.8k]
  |  |  ------------------
  ------------------
29465|    156|        {
29466|    156|            flush();
29467|    156|        }
29468|  47.9k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|  47.9k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|  47.9k|        unsigned int n_chars = 0;
29474|       |
29475|  47.9k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 0, False: 47.9k]
  ------------------
29476|      0|        {
29477|      0|            *buffer_ptr = '-';
29478|      0|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|      0|            n_chars = 1;
29480|      0|        }
29481|  47.9k|        else
29482|  47.9k|        {
29483|  47.9k|            abs_value = static_cast<number_magnitude_t>(x);
29484|  47.9k|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|  47.9k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 44.9k, False: 3.03k]
  ------------------
29489|  44.9k|        {
29490|  44.9k|            const std::uint64_t value = abs_value;
29491|  44.9k|            const std::uint64_t upper = value / 100000000u;
29492|  44.9k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 1.88k, False: 43.0k]
  ------------------
29493|  44.9k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|  44.9k|            char* const p = buffer_ptr + n_chars;
29495|  44.9k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|  44.9k|            n_chars += 8 - leading;
29497|  44.9k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 1.88k, False: 43.0k]
  ------------------
29498|  1.88k|            {
29499|  1.88k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  1.88k|                n_chars += 8;
29501|  1.88k|            }
29502|  44.9k|            write_buffer_pos += n_chars;
29503|  44.9k|            return;
29504|  44.9k|        }
29505|       |
29506|  3.03k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  3.03k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  3.03k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 3.03k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  3.03k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  29.6k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 26.5k, False: 3.03k]
  ------------------
29518|  26.5k|        {
29519|  26.5k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  26.5k|            abs_value /= 100;
29521|  26.5k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  26.5k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  26.5k|        }
29524|       |
29525|  3.03k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 1.01k, False: 2.02k]
  ------------------
29526|  1.01k|        {
29527|  1.01k|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|  1.01k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|  1.01k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|  1.01k|        }
29531|  2.02k|        else
29532|  2.02k|        {
29533|  2.02k|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|  2.02k|        }
29535|       |
29536|  3.03k|        write_buffer_pos += n_chars;
29537|  3.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberImTnNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEEbSK_:
29361|  47.9k|    {
29362|  47.9k|        return false;
29363|  47.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11remove_signEl:
29661|  49.0k|    {
29662|  49.0k|        JSON_ASSERT(x < 0);
  ------------------
  |  | 2591|  49.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29662:9): [True: 49.0k, False: 0]
  ------------------
29663|  49.0k|        return static_cast<number_magnitude_t>(-(x + 1)) + 1;
29664|  49.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl17eight_digit_bytesEm:
27559|   102k|{
27560|   102k|    const std::uint64_t abcd_efgh = abcdefgh + (((std::uint64_t{1} << 32u) - 10000u) * ((abcdefgh * (((std::uint64_t{1} << 40u) / 10000u) + 1u)) >> 40u));
27561|   102k|    const std::uint64_t ab_cd_ef_gh = abcd_efgh + (((std::uint64_t{1} << 16u) - 100u) * (((abcd_efgh * (((std::uint64_t{1} << 19u) / 100u) + 1u)) >> 19u) & 0x7F0000007Fu));
27562|   102k|    return ab_cd_ef_gh + (((std::uint64_t{1} << 8u) - 10u) * (((ab_cd_ef_gh * (((std::uint64_t{1} << 10u) / 10u) + 1u)) >> 10u) & 0x000F000F000F000Fu));
27563|   102k|}
_ZN8nlohmann16json_abi_v3_12_06detail19count_leading_zerosEm:
 9296|   121k|{
 9297|   121k|#if defined(__GNUC__) || defined(__clang__)
 9298|   121k|    return __builtin_clzll(x);
 9299|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9300|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9301|       |    _BitScanReverse64(&index, x);
 9302|       |    return 63 - static_cast<int>(index);
 9303|       |#else
 9304|       |    int n = 0;
 9305|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9306|       |    {
 9307|       |        if ((x >> (64 - shift)) == 0)
 9308|       |        {
 9309|       |            n += shift;
 9310|       |            x <<= shift;
 9311|       |        }
 9312|       |    }
 9313|       |    return n;
 9314|       |#endif
 9315|   121k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl15store_msb_firstEPcm:
27569|   105k|{
27570|   105k|#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
27571|   105k|    v = __builtin_bswap64(v);
27572|   105k|    std::memcpy(p, &v, sizeof(v));
27573|       |#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
27574|       |    std::memcpy(p, &v, sizeof(v));
27575|       |#elif defined(_MSC_VER) // (little-endian on all its targets)
27576|       |    v = _byteswap_uint64(v);
27577|       |    std::memcpy(p, &v, sizeof(v));
27578|       |#else
27579|       |    for (unsigned i = 0; i < 8; ++i)
27580|       |    {
27581|       |        p[i] = static_cast<char>(v >> (56u - (8u * i)));
27582|       |    }
27583|       |#endif
27584|   105k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12count_digitsEm:
29173|  6.16k|    {
29174|  6.16k|        unsigned int n_digits = 1;
29175|  6.16k|        for (;;)
29176|  30.8k|        {
29177|  30.8k|            if (x < 10)
  ------------------
  |  Branch (29177:17): [True: 816, False: 29.9k]
  ------------------
29178|    816|            {
29179|    816|                return n_digits;
29180|    816|            }
29181|  29.9k|            if (x < 100)
  ------------------
  |  Branch (29181:17): [True: 726, False: 29.2k]
  ------------------
29182|    726|            {
29183|    726|                return n_digits + 1;
29184|    726|            }
29185|  29.2k|            if (x < 1000)
  ------------------
  |  Branch (29185:17): [True: 3.94k, False: 25.3k]
  ------------------
29186|  3.94k|            {
29187|  3.94k|                return n_digits + 2;
29188|  3.94k|            }
29189|  25.3k|            if (x < 10000)
  ------------------
  |  Branch (29189:17): [True: 678, False: 24.6k]
  ------------------
29190|    678|            {
29191|    678|                return n_digits + 3;
29192|    678|            }
29193|  24.6k|            x = x / 10000u;
29194|  24.6k|            n_digits += 4;
29195|  24.6k|        }
29196|  6.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm5EEEvRAT__Kc:
29090|  14.8k|    {
29091|  14.8k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  14.8k|        constexpr std::size_t length = N - 1;
29094|  14.8k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  14.8k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  14.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 186, False: 14.7k]
  |  |  ------------------
  ------------------
29097|    186|        {
29098|    186|            flush();
29099|    186|        }
29100|  14.8k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  14.8k|        write_buffer_pos += length;
29102|  14.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm13EEEvRAT__Kc:
29090|   118k|    {
29091|   118k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|   118k|        constexpr std::size_t length = N - 1;
29094|   118k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|   118k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|   118k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 342, False: 118k]
  |  |  ------------------
  ------------------
29097|    342|        {
29098|    342|            flush();
29099|    342|        }
29100|   118k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|   118k|        write_buffer_pos += length;
29102|   118k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm6EEEvRAT__Kc:
29090|   124k|    {
29091|   124k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|   124k|        constexpr std::size_t length = N - 1;
29094|   124k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|   124k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|   124k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 258, False: 124k]
  |  |  ------------------
  ------------------
29097|    258|        {
29098|    258|            flush();
29099|    258|        }
29100|   124k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|   124k|        write_buffer_pos += length;
29102|   124k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerIlTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
29439|  49.0k|    {
29440|  49.0k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|  49.0k|        {
29442|  49.0k|            {
29443|  49.0k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|  49.0k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|  49.0k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|  49.0k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|  49.0k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|  49.0k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|  49.0k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|  49.0k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|  49.0k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|  49.0k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|  49.0k|            }
29454|  49.0k|        };
29455|       |
29456|       |        // special case for "0"
29457|  49.0k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 0, False: 49.0k]
  ------------------
29458|      0|        {
29459|      0|            put_char('0');
29460|      0|            return;
29461|      0|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|  49.0k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  49.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 264, False: 48.8k]
  |  |  ------------------
  ------------------
29465|    264|        {
29466|    264|            flush();
29467|    264|        }
29468|  49.0k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|  49.0k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|  49.0k|        unsigned int n_chars = 0;
29474|       |
29475|  49.0k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 49.0k, False: 0]
  ------------------
29476|  49.0k|        {
29477|  49.0k|            *buffer_ptr = '-';
29478|  49.0k|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|  49.0k|            n_chars = 1;
29480|  49.0k|        }
29481|      0|        else
29482|      0|        {
29483|      0|            abs_value = static_cast<number_magnitude_t>(x);
29484|      0|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|  49.0k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 45.9k, False: 3.12k]
  ------------------
29489|  45.9k|        {
29490|  45.9k|            const std::uint64_t value = abs_value;
29491|  45.9k|            const std::uint64_t upper = value / 100000000u;
29492|  45.9k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 2.04k, False: 43.9k]
  ------------------
29493|  45.9k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|  45.9k|            char* const p = buffer_ptr + n_chars;
29495|  45.9k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|  45.9k|            n_chars += 8 - leading;
29497|  45.9k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 2.04k, False: 43.9k]
  ------------------
29498|  2.04k|            {
29499|  2.04k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  2.04k|                n_chars += 8;
29501|  2.04k|            }
29502|  45.9k|            write_buffer_pos += n_chars;
29503|  45.9k|            return;
29504|  45.9k|        }
29505|       |
29506|  3.12k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  3.12k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  3.12k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 3.12k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  3.12k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  30.4k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 27.3k, False: 3.12k]
  ------------------
29518|  27.3k|        {
29519|  27.3k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  27.3k|            abs_value /= 100;
29521|  27.3k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  27.3k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  27.3k|        }
29524|       |
29525|  3.12k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 390, False: 2.73k]
  ------------------
29526|    390|        {
29527|    390|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|    390|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|    390|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|    390|        }
29531|  2.73k|        else
29532|  2.73k|        {
29533|  2.73k|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|  2.73k|        }
29535|       |
29536|  3.12k|        write_buffer_pos += n_chars;
29537|  3.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberIlTnNS4_9enable_ifIXsr9is_signedIT_EE5valueEiE4typeELi0EEEbSK_:
29355|  49.0k|    {
29356|  49.0k|        return x < 0;
29357|  49.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEd:
29547|  37.5k|    {
29548|       |        // NaN / inf
29549|  37.5k|        if (!std::isfinite(x))
  ------------------
  |  Branch (29549:13): [True: 5.18k, False: 32.4k]
  ------------------
29550|  5.18k|        {
29551|  5.18k|            put_literal("null");
29552|  5.18k|            return;
29553|  5.18k|        }
29554|       |
29555|       |        // If number_float_t is an IEEE-754 single or double precision number,
29556|       |        // use the Grisu2 algorithm to produce short numbers which are
29557|       |        // guaranteed to round-trip, using strtof and strtod, resp.
29558|       |        //
29559|       |        // NB: The test below works if <long double> == <double>.
29560|  32.4k|        static constexpr bool is_ieee_single_or_double
29561|  32.4k|            = (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 24 && std::numeric_limits<number_float_t>::max_exponent == 128) ||
  ------------------
  |  Branch (29561:16): [True: 0, Folded]
  |  Branch (29561:66): [Folded, False: 0]
  |  Branch (29561:119): [Folded, False: 0]
  ------------------
29562|      0|              (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 53 && std::numeric_limits<number_float_t>::max_exponent == 1024);
  ------------------
  |  Branch (29562:16): [True: 0, Folded]
  |  Branch (29562:66): [True: 0, Folded]
  |  Branch (29562:119): [True: 0, Folded]
  ------------------
29563|       |
29564|  32.4k|        dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
29565|  32.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEdNS4_17integral_constantIbLb1EEE:
29568|  32.4k|    {
29569|       |        // directly into the write buffer: copying the text from number_buffer
29570|       |        // right after to_chars() wrote it waits until its stores are done
29571|  32.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  32.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 186, False: 32.2k]
  |  |  ------------------
  ------------------
29572|    186|        {
29573|    186|            flush();
29574|    186|        }
29575|  32.4k|        auto* begin = write_buffer.data() + write_buffer_pos;
29576|  32.4k|        auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
29577|  32.4k|        write_buffer_pos += static_cast<std::size_t>(end - begin);
29578|  32.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8to_charsIdEEPcS3_PKcT_:
27946|  32.4k|{
27947|  32.4k|    JSON_ASSERT(std::isfinite(value));
  ------------------
  |  | 2591|  32.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27947:5): [True: 32.4k, False: 0]
  ------------------
27948|       |
27949|       |    // Use signbit(value) instead of (value < 0) since signbit works for -0.
27950|  32.4k|    if (std::signbit(value))
  ------------------
  |  Branch (27950:9): [True: 16.4k, False: 16.0k]
  ------------------
27951|  16.4k|    {
27952|  16.4k|        value = -value;
27953|  16.4k|        *first++ = '-';
27954|  16.4k|    }
27955|       |
27956|  32.4k|#ifdef __GNUC__
27957|  32.4k|    JSON_HEDLEY_DIAGNOSTIC_PUSH
27958|  32.4k|    JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
27959|  32.4k|#endif
27960|  32.4k|    if (value == 0) // +-0
  ------------------
  |  Branch (27960:9): [True: 2.25k, False: 30.1k]
  ------------------
27961|  2.25k|    {
27962|  2.25k|        *first++ = '0';
27963|       |        // Make it look like a floating-point number (#362, #378)
27964|  2.25k|        *first++ = '.';
27965|  2.25k|        *first++ = '0';
27966|  2.25k|        return first;
27967|  2.25k|    }
27968|  30.1k|#ifdef __GNUC__
27969|  30.1k|    JSON_HEDLEY_DIAGNOSTIC_POP
27970|  30.1k|#endif
27971|       |
27972|  30.1k|    return dtoa_impl::write_positive(first, last, value);
27973|  32.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_:
27926|  30.1k|{
27927|  30.1k|    return write_positive(first, last, value, is_binary64<FloatType> {});
27928|  30.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_NSt3__117integral_constantIbLb1EEE:
27908|  30.1k|{
27909|  30.1k|    return write_positive_zmij(first, last, value);
27910|  30.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl19write_positive_zmijIdEEPcS4_PKcT_:
27885|  30.1k|{
27886|  30.1k|    static_assert(is_binary64<FloatType>::value,
27887|  30.1k|                  "internal error: the conversion of Zmij needs IEEE 754 binary64 numbers");
27888|  30.1k|    std::uint64_t bits = 0;
27889|  30.1k|    std::memcpy(&bits, &value, sizeof(bits));
27890|  30.1k|    const zmij::shortest_decimal d = zmij::to_shortest(bits);
27891|  30.1k|    if (JSON_HEDLEY_LIKELY(last - first >= 41))
  ------------------
  |  | 1666|  30.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 30.1k, False: 0]
  |  |  ------------------
  ------------------
27892|  30.1k|    {
27893|  30.1k|        return write_shortest(first, d);
27894|  30.1k|    }
27895|      0|    std::array<char, 64> buf; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27896|      0|    const auto len = static_cast<std::size_t>(write_shortest(buf.data(), d) - buf.data());
27897|      0|    JSON_ASSERT(last - first >= static_cast<std::ptrdiff_t>(len));
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27897:5): [True: 0, False: 0]
  ------------------
27898|      0|    std::memcpy(first, buf.data(), len);
27899|      0|    return first + len;
27900|      0|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11to_shortestEm:
26468|  30.1k|{
26469|  30.1k|    constexpr int extra_shift = 9;
26470|  30.1k|    const auto raw_exp = static_cast<int>((bits >> 52u) & 0x7FFu);
26471|  30.1k|    std::uint64_t bin_sig = bits & ((std::uint64_t{1} << 52u) - 1);
26472|       |    // a power of two has a narrower interval below (except the smallest normal)
26473|  30.1k|    const bool regular = bin_sig != 0 || raw_exp <= 1;
  ------------------
  |  Branch (26473:26): [True: 28.0k, False: 2.08k]
  |  Branch (26473:42): [True: 0, False: 2.08k]
  ------------------
26474|  30.1k|    const int bin_exp = (raw_exp == 0 ? 1 : raw_exp) - 1075;
  ------------------
  |  Branch (26474:26): [True: 3.73k, False: 26.4k]
  ------------------
26475|  30.1k|    if (raw_exp != 0)
  ------------------
  |  Branch (26475:9): [True: 26.4k, False: 3.73k]
  ------------------
26476|  26.4k|    {
26477|  26.4k|        bin_sig |= std::uint64_t{1} << 52u;
26478|  26.4k|    }
26479|       |    // floor(log10(2^bin_exp)), or floor(log10(3/4 * 2^bin_exp)) for the irregular case
26480|  30.1k|    const int dec_exp = ((bin_exp * 315653) - (regular ? 0 : 131072)) >> 20;
  ------------------
  |  Branch (26480:48): [True: 28.0k, False: 2.08k]
  ------------------
26481|       |    // scaled by 10^(-dec_exp - 1): the integral part is the shorter candidate
26482|  30.1k|    const int shift = bin_exp + ((-(dec_exp + 1) * 217707) >> 16) + 1 + extra_shift;
26483|  30.1k|    const uint128_parts p10 = pow10(-dec_exp - 1);
26484|  30.1k|    const uint128_parts p = umul192_hi128(p10.high, p10.low, bin_sig << static_cast<unsigned>(shift));
26485|  30.1k|    std::uint64_t integral = p.high >> static_cast<unsigned>(extra_shift);
26486|       |    // (no casts in the shifts: MSVC 2015 warns C4554 on them despite the parentheses)
26487|  30.1k|    constexpr auto fractional_low_shift = static_cast<unsigned>(extra_shift);
26488|  30.1k|    constexpr unsigned fractional_high_shift = 64u - fractional_low_shift;
26489|  30.1k|    const std::uint64_t fractional = (p.high << fractional_high_shift) | (p.low >> fractional_low_shift);
26490|  30.1k|    std::uint64_t digit = 0;
26491|  30.1k|    bool round_up = false;
26492|  30.1k|    bool round_down = false;
26493|  30.1k|    if (JSON_HEDLEY_LIKELY(regular))
  ------------------
  |  | 1666|  30.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 28.0k, False: 2.08k]
  |  |  ------------------
  ------------------
26494|  28.0k|    {
26495|  28.0k|        const std::uint64_t half_ulp = (p10.high >> static_cast<unsigned>(extra_shift + 1 - shift)) + (1 - (bin_sig & 1u));
26496|  28.0k|        round_up = fractional + half_ulp < fractional;
26497|  28.0k|        round_down = half_ulp > fractional;
26498|       |        // the last digit of the longer candidate, rounded to nearest
26499|  28.0k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) + 6);
26500|  28.0k|        if (fractional == (std::uint64_t{1} << 62u))
  ------------------
  |  Branch (26500:13): [True: 1.22k, False: 26.8k]
  ------------------
26501|  1.22k|        {
26502|  1.22k|            digit = 2; // 2.5 rounds to 2
26503|  1.22k|        }
26504|  28.0k|    }
26505|  2.08k|    else
26506|  2.08k|    {
26507|  2.08k|        const std::uint64_t half_ulp = p10.high >> static_cast<unsigned>(extra_shift + 1 - shift);
26508|  2.08k|        round_up = half_ulp > ~std::uint64_t{0} - fractional;
26509|  2.08k|        round_down = (half_ulp >> 1u) > fractional;
26510|  2.08k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) - 1);
26511|  2.08k|        const std::uint64_t lowest = umul128_add_hi64(fractional - (half_ulp >> 1u), 10, ~std::uint64_t{0});
26512|  2.08k|        digit = digit < lowest ? lowest : digit;
  ------------------
  |  Branch (26512:17): [True: 1.31k, False: 774]
  ------------------
26513|  2.08k|    }
26514|  30.1k|    integral += round_up ? 1u : 0u;
  ------------------
  |  Branch (26514:17): [True: 3.58k, False: 26.5k]
  ------------------
26515|       |    // if the shorter candidate is outside the rounding interval: one digit more
26516|  30.1k|    return shortest_decimal{integral, dec_exp, static_cast<unsigned char>(digit), !round_up && !round_down};
  ------------------
  |  Branch (26516:83): [True: 26.5k, False: 3.58k]
  |  Branch (26516:96): [True: 8.44k, False: 18.1k]
  ------------------
26517|  30.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij5pow10Ei:
26422|  30.1k|{
26423|  30.1k|    if (k > pow5_128_largest_power)
  ------------------
  |  Branch (26423:9): [True: 4.39k, False: 25.7k]
  ------------------
26424|  4.39k|    {
26425|  4.39k|        return compute_pow10(k); // (only for the smallest doubles)
26426|  4.39k|    }
26427|  25.7k|    const auto i = 2 * static_cast<std::size_t>(k - pow5_128_smallest_power);
26428|  25.7k|    uint128_parts r{pow5_128()[i + 1], pow5_128()[i]};
26429|  25.7k|    const std::uint64_t adjust = static_cast<unsigned>(k + 27) < 27u ? 1u : 0u;
  ------------------
  |  Branch (26429:34): [True: 2.53k, False: 23.2k]
  ------------------
26430|  25.7k|    r.high -= r.low < adjust ? 1u : 0u;
  ------------------
  |  Branch (26430:15): [True: 0, False: 25.7k]
  ------------------
26431|  25.7k|    r.low -= adjust;
26432|  25.7k|    return r;
26433|  30.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13compute_pow10Ei:
26392|  4.39k|{
26393|  4.39k|    const auto i = static_cast<unsigned>(k + 307);
26394|  4.39k|    const std::uint64_t m = pow10_minor()[(i + 24) % 28];
26395|  4.39k|    const std::size_t j = 2 * static_cast<std::size_t>((i + 24) / 28);
26396|  4.39k|    const std::uint64_t h_hi = pow10_major()[j];
26397|  4.39k|    const std::uint64_t h_lo = pow10_major()[j + 1];
26398|  4.39k|    const std::uint64_t h1 = full_multiplication(h_lo, m).high;
26399|  4.39k|    const std::uint64_t c0 = h_lo * m;
26400|  4.39k|    const std::uint64_t c1 = h1 + (h_hi * m);
26401|  4.39k|    const std::uint64_t c2 = (c1 < h1 ? 1u : 0u) + full_multiplication(h_hi, m).high;
  ------------------
  |  Branch (26401:31): [True: 342, False: 4.05k]
  ------------------
26402|  4.39k|    uint128_parts r{};
26403|  4.39k|    if ((c2 >> 63u) != 0)
  ------------------
  |  Branch (26403:9): [True: 582, False: 3.81k]
  ------------------
26404|    582|    {
26405|    582|        r.high = c2;
26406|    582|        r.low = c1;
26407|    582|    }
26408|  3.81k|    else
26409|  3.81k|    {
26410|  3.81k|        r.high = (c2 << 1u) | (c1 >> 63u);
26411|  3.81k|        r.low = (c1 << 1u) | (c0 >> 63u);
26412|  3.81k|    }
26413|  4.39k|    r.low -= (pow10_fixups()[i >> 5u] >> (i & 31u)) & 1u;
26414|  4.39k|    return r;
26415|  4.39k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_minorEv:
26340|  4.39k|{
26341|  4.39k|    static const std::array<std::uint64_t, 28> table =
26342|  4.39k|    {
26343|  4.39k|        {
26344|  4.39k|            0x8000000000000000u, 0xa000000000000000u, 0xc800000000000000u, 0xfa00000000000000u, 0x9c40000000000000u,
26345|  4.39k|            0xc350000000000000u, 0xf424000000000000u, 0x9896800000000000u, 0xbebc200000000000u, 0xee6b280000000000u,
26346|  4.39k|            0x9502f90000000000u, 0xba43b74000000000u, 0xe8d4a51000000000u, 0x9184e72a00000000u, 0xb5e620f480000000u,
26347|  4.39k|            0xe35fa931a0000000u, 0x8e1bc9bf04000000u, 0xb1a2bc2ec5000000u, 0xde0b6b3a76400000u, 0x8ac7230489e80000u,
26348|  4.39k|            0xad78ebc5ac620000u, 0xd8d726b7177a8000u, 0x878678326eac9000u, 0xa968163f0a57b400u, 0xd3c21bcecceda100u,
26349|  4.39k|            0x84595161401484a0u, 0xa56fa5b99019a5c8u, 0xcecb8f27f4200f3au
26350|  4.39k|        }
26351|  4.39k|    };
26352|  4.39k|    return table;
26353|  4.39k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_majorEv:
26357|  8.78k|{
26358|  8.78k|    static const std::array<std::uint64_t, 50> table =
26359|  8.78k|    {
26360|  8.78k|        {
26361|  8.78k|            0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3eu, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44ddau, 0xb1442798f49ffb4au, 0x99cd11cfdf41779du,
26362|  8.78k|            0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u, 0xb4bca50b065abe63u, 0x0fed077a756b53aau, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d543u,
26363|  8.78k|            0xb84687c269ef3bfbu, 0x3d5d514f40eea742u, 0xba121a4650e4ddebu, 0x92f34d62616ce413u, 0xbbe226efb628afeau, 0x890489f70a55368cu,
26364|  8.78k|            0xbdb6b8e905cb600fu, 0x5400e987bbc1c921u, 0xbf8fdb78849a5f96u, 0xde98520472bdd034u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
26365|  8.78k|            0xc350000000000000u, 0x0000000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef6u,
26366|  8.78k|            0xc913936dd571c84cu, 0x03bc3a19cd1e38eau, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc6u, 0xcd036837130890a1u, 0x36dba887c37a8c10u,
26367|  8.78k|            0xcf02b2c21207ef2eu, 0x94f967e45e03f4bcu, 0xd106f86e69d785c7u, 0xe13336d701beba52u, 0xd31045a8341ca07cu, 0x1ede48111209a051u,
26368|  8.78k|            0xd51ea6fa85785631u, 0x552a74227f3ea566u, 0xd732290fbacaf133u, 0xa97c177947ad4096u, 0xd94ad8b1c7380874u, 0x18375281ae7822bdu,
26369|  8.78k|            0xdb68c2ca82ed2a05u, 0xa67398db9f6820e1u
26370|  8.78k|        }
26371|  8.78k|    };
26372|  8.78k|    return table;
26373|  8.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail19full_multiplicationEmm:
 9348|   101k|{
 9349|   101k|#if defined(__SIZEOF_INT128__)
 9350|   101k|    __extension__ using uint128 = unsigned __int128;
 9351|   101k|    const uint128 r = static_cast<uint128>(a) * b;
 9352|   101k|    return {static_cast<std::uint64_t>(r), static_cast<std::uint64_t>(r >> 64u)};
 9353|       |#elif defined(_MSC_VER) && defined(_M_X64)
 9354|       |    std::uint64_t high = 0;
 9355|       |    const std::uint64_t low = _umul128(a, b, &high);
 9356|       |    return {low, high};
 9357|       |#elif defined(_MSC_VER) && defined(_M_ARM64)
 9358|       |    return {a * b, __umulh(a, b)};
 9359|       |#else
 9360|       |    const std::uint64_t a_lo = a & 0xFFFFFFFFu;
 9361|       |    const std::uint64_t a_hi = a >> 32u;
 9362|       |    const std::uint64_t b_lo = b & 0xFFFFFFFFu;
 9363|       |    const std::uint64_t b_hi = b >> 32u;
 9364|       |    const std::uint64_t lo_lo = a_lo * b_lo;
 9365|       |    const std::uint64_t hi_lo = a_hi * b_lo;
 9366|       |    const std::uint64_t lo_hi = a_lo * b_hi;
 9367|       |    const std::uint64_t hi_hi = a_hi * b_hi;
 9368|       |    const std::uint64_t cross = (lo_lo >> 32u) + (hi_lo & 0xFFFFFFFFu) + lo_hi;
 9369|       |    return {(cross << 32u) | (lo_lo & 0xFFFFFFFFu), (hi_lo >> 32u) + (cross >> 32u) + hi_hi};
 9370|       |#endif
 9371|   101k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij12pow10_fixupsEv:
26377|  4.39k|{
26378|  4.39k|    static const std::array<std::uint32_t, 21> table =
26379|  4.39k|    {
26380|  4.39k|        {
26381|  4.39k|            0x8d8fc810u, 0x06100293u, 0x19000000u, 0x00100000u, 0x00000908u, 0x00000000u, 0x04e00300u, 0x3807e0b2u, 0x3d83d793u, 0x0006f5ccu,
26382|  4.39k|            0x00000000u, 0xffff0000u, 0x8076337du, 0x4ff45ba0u, 0x09405033u, 0x034376d9u, 0x09000000u, 0x4e100501u, 0x076d14dcu, 0xf964f45eu,
26383|  4.39k|            0x0000003du
26384|  4.39k|        }
26385|  4.39k|    };
26386|  4.39k|    return table;
26387|  4.39k|}
_ZN8nlohmann16json_abi_v3_12_06detail8pow5_128Ev:
 9468|  51.5k|{
 9469|  51.5k|    static const std::array<std::uint64_t, 1302> table =
 9470|  51.5k|    {
 9471|  51.5k|        {
 9472|  51.5k|            0xeef453d6923bd65au, 0x113faa2906a13b3fu, 0x9558b4661b6565f8u, 0x4ac7ca59a424c507u,
 9473|  51.5k|            0xbaaee17fa23ebf76u, 0x5d79bcf00d2df649u, 0xe95a99df8ace6f53u, 0xf4d82c2c107973dcu,
 9474|  51.5k|            0x91d8a02bb6c10594u, 0x79071b9b8a4be869u, 0xb64ec836a47146f9u, 0x9748e2826cdee284u,
 9475|  51.5k|            0xe3e27a444d8d98b7u, 0xfd1b1b2308169b25u, 0x8e6d8c6ab0787f72u, 0xfe30f0f5e50e20f7u,
 9476|  51.5k|            0xb208ef855c969f4fu, 0xbdbd2d335e51a935u, 0xde8b2b66b3bc4723u, 0xad2c788035e61382u,
 9477|  51.5k|            0x8b16fb203055ac76u, 0x4c3bcb5021afcc31u, 0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3du,
 9478|  51.5k|            0xd953e8624b85dd78u, 0xd71d6dad34a2af0du, 0x87d4713d6f33aa6bu, 0x8672648c40e5ad68u,
 9479|  51.5k|            0xa9c98d8ccb009506u, 0x680efdaf511f18c2u, 0xd43bf0effdc0ba48u, 0x0212bd1b2566def2u,
 9480|  51.5k|            0x84a57695fe98746du, 0x014bb630f7604b57u, 0xa5ced43b7e3e9188u, 0x419ea3bd35385e2du,
 9481|  51.5k|            0xcf42894a5dce35eau, 0x52064cac828675b9u, 0x818995ce7aa0e1b2u, 0x7343efebd1940993u,
 9482|  51.5k|            0xa1ebfb4219491a1fu, 0x1014ebe6c5f90bf8u, 0xca66fa129f9b60a6u, 0xd41a26e077774ef6u,
 9483|  51.5k|            0xfd00b897478238d0u, 0x8920b098955522b4u, 0x9e20735e8cb16382u, 0x55b46e5f5d5535b0u,
 9484|  51.5k|            0xc5a890362fddbc62u, 0xeb2189f734aa831du, 0xf712b443bbd52b7bu, 0xa5e9ec7501d523e4u,
 9485|  51.5k|            0x9a6bb0aa55653b2du, 0x47b233c92125366eu, 0xc1069cd4eabe89f8u, 0x999ec0bb696e840au,
 9486|  51.5k|            0xf148440a256e2c76u, 0xc00670ea43ca250du, 0x96cd2a865764dbcau, 0x380406926a5e5728u,
 9487|  51.5k|            0xbc807527ed3e12bcu, 0xc605083704f5ecf2u, 0xeba09271e88d976bu, 0xf7864a44c633682eu,
 9488|  51.5k|            0x93445b8731587ea3u, 0x7ab3ee6afbe0211du, 0xb8157268fdae9e4cu, 0x5960ea05bad82964u,
 9489|  51.5k|            0xe61acf033d1a45dfu, 0x6fb92487298e33bdu, 0x8fd0c16206306babu, 0xa5d3b6d479f8e056u,
 9490|  51.5k|            0xb3c4f1ba87bc8696u, 0x8f48a4899877186cu, 0xe0b62e2929aba83cu, 0x331acdabfe94de87u,
 9491|  51.5k|            0x8c71dcd9ba0b4925u, 0x9ff0c08b7f1d0b14u, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44dd9u,
 9492|  51.5k|            0xdb71e91432b1a24au, 0xc9e82cd9f69d6150u, 0x892731ac9faf056eu, 0xbe311c083a225cd2u,
 9493|  51.5k|            0xab70fe17c79ac6cau, 0x6dbd630a48aaf406u, 0xd64d3d9db981787du, 0x092cbbccdad5b108u,
 9494|  51.5k|            0x85f0468293f0eb4eu, 0x25bbf56008c58ea5u, 0xa76c582338ed2621u, 0xaf2af2b80af6f24eu,
 9495|  51.5k|            0xd1476e2c07286faau, 0x1af5af660db4aee1u, 0x82cca4db847945cau, 0x50d98d9fc890ed4du,
 9496|  51.5k|            0xa37fce126597973cu, 0xe50ff107bab528a0u, 0xcc5fc196fefd7d0cu, 0x1e53ed49a96272c8u,
 9497|  51.5k|            0xff77b1fcbebcdc4fu, 0x25e8e89c13bb0f7au, 0x9faacf3df73609b1u, 0x77b191618c54e9acu,
 9498|  51.5k|            0xc795830d75038c1du, 0xd59df5b9ef6a2417u, 0xf97ae3d0d2446f25u, 0x4b0573286b44ad1du,
 9499|  51.5k|            0x9becce62836ac577u, 0x4ee367f9430aec32u, 0xc2e801fb244576d5u, 0x229c41f793cda73fu,
 9500|  51.5k|            0xf3a20279ed56d48au, 0x6b43527578c1110fu, 0x9845418c345644d6u, 0x830a13896b78aaa9u,
 9501|  51.5k|            0xbe5691ef416bd60cu, 0x23cc986bc656d553u, 0xedec366b11c6cb8fu, 0x2cbfbe86b7ec8aa8u,
 9502|  51.5k|            0x94b3a202eb1c3f39u, 0x7bf7d71432f3d6a9u, 0xb9e08a83a5e34f07u, 0xdaf5ccd93fb0cc53u,
 9503|  51.5k|            0xe858ad248f5c22c9u, 0xd1b3400f8f9cff68u, 0x91376c36d99995beu, 0x23100809b9c21fa1u,
 9504|  51.5k|            0xb58547448ffffb2du, 0xabd40a0c2832a78au, 0xe2e69915b3fff9f9u, 0x16c90c8f323f516cu,
 9505|  51.5k|            0x8dd01fad907ffc3bu, 0xae3da7d97f6792e3u, 0xb1442798f49ffb4au, 0x99cd11cfdf41779cu,
 9506|  51.5k|            0xdd95317f31c7fa1du, 0x40405643d711d583u, 0x8a7d3eef7f1cfc52u, 0x482835ea666b2572u,
 9507|  51.5k|            0xad1c8eab5ee43b66u, 0xda3243650005eecfu, 0xd863b256369d4a40u, 0x90bed43e40076a82u,
 9508|  51.5k|            0x873e4f75e2224e68u, 0x5a7744a6e804a291u, 0xa90de3535aaae202u, 0x711515d0a205cb36u,
 9509|  51.5k|            0xd3515c2831559a83u, 0x0d5a5b44ca873e03u, 0x8412d9991ed58091u, 0xe858790afe9486c2u,
 9510|  51.5k|            0xa5178fff668ae0b6u, 0x626e974dbe39a872u, 0xce5d73ff402d98e3u, 0xfb0a3d212dc8128fu,
 9511|  51.5k|            0x80fa687f881c7f8eu, 0x7ce66634bc9d0b99u, 0xa139029f6a239f72u, 0x1c1fffc1ebc44e80u,
 9512|  51.5k|            0xc987434744ac874eu, 0xa327ffb266b56220u, 0xfbe9141915d7a922u, 0x4bf1ff9f0062baa8u,
 9513|  51.5k|            0x9d71ac8fada6c9b5u, 0x6f773fc3603db4a9u, 0xc4ce17b399107c22u, 0xcb550fb4384d21d3u,
 9514|  51.5k|            0xf6019da07f549b2bu, 0x7e2a53a146606a48u, 0x99c102844f94e0fbu, 0x2eda7444cbfc426du,
 9515|  51.5k|            0xc0314325637a1939u, 0xfa911155fefb5308u, 0xf03d93eebc589f88u, 0x793555ab7eba27cau,
 9516|  51.5k|            0x96267c7535b763b5u, 0x4bc1558b2f3458deu, 0xbbb01b9283253ca2u, 0x9eb1aaedfb016f16u,
 9517|  51.5k|            0xea9c227723ee8bcbu, 0x465e15a979c1cadcu, 0x92a1958a7675175fu, 0x0bfacd89ec191ec9u,
 9518|  51.5k|            0xb749faed14125d36u, 0xcef980ec671f667bu, 0xe51c79a85916f484u, 0x82b7e12780e7401au,
 9519|  51.5k|            0x8f31cc0937ae58d2u, 0xd1b2ecb8b0908810u, 0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u,
 9520|  51.5k|            0xdfbdcece67006ac9u, 0x67a791e093e1d49au, 0x8bd6a141006042bdu, 0xe0c8bb2c5c6d24e0u,
 9521|  51.5k|            0xaecc49914078536du, 0x58fae9f773886e18u, 0xda7f5bf590966848u, 0xaf39a475506a899eu,
 9522|  51.5k|            0x888f99797a5e012du, 0x6d8406c952429603u, 0xaab37fd7d8f58178u, 0xc8e5087ba6d33b83u,
 9523|  51.5k|            0xd5605fcdcf32e1d6u, 0xfb1e4a9a90880a64u, 0x855c3be0a17fcd26u, 0x5cf2eea09a55067fu,
 9524|  51.5k|            0xa6b34ad8c9dfc06fu, 0xf42faa48c0ea481eu, 0xd0601d8efc57b08bu, 0xf13b94daf124da26u,
 9525|  51.5k|            0x823c12795db6ce57u, 0x76c53d08d6b70858u, 0xa2cb1717b52481edu, 0x54768c4b0c64ca6eu,
 9526|  51.5k|            0xcb7ddcdda26da268u, 0xa9942f5dcf7dfd09u, 0xfe5d54150b090b02u, 0xd3f93b35435d7c4cu,
 9527|  51.5k|            0x9efa548d26e5a6e1u, 0xc47bc5014a1a6dafu, 0xc6b8e9b0709f109au, 0x359ab6419ca1091bu,
 9528|  51.5k|            0xf867241c8cc6d4c0u, 0xc30163d203c94b62u, 0x9b407691d7fc44f8u, 0x79e0de63425dcf1du,
 9529|  51.5k|            0xc21094364dfb5636u, 0x985915fc12f542e4u, 0xf294b943e17a2bc4u, 0x3e6f5b7b17b2939du,
 9530|  51.5k|            0x979cf3ca6cec5b5au, 0xa705992ceecf9c42u, 0xbd8430bd08277231u, 0x50c6ff782a838353u,
 9531|  51.5k|            0xece53cec4a314ebdu, 0xa4f8bf5635246428u, 0x940f4613ae5ed136u, 0x871b7795e136be99u,
 9532|  51.5k|            0xb913179899f68584u, 0x28e2557b59846e3fu, 0xe757dd7ec07426e5u, 0x331aeada2fe589cfu,
 9533|  51.5k|            0x9096ea6f3848984fu, 0x3ff0d2c85def7621u, 0xb4bca50b065abe63u, 0x0fed077a756b53a9u,
 9534|  51.5k|            0xe1ebce4dc7f16dfbu, 0xd3e8495912c62894u, 0x8d3360f09cf6e4bdu, 0x64712dd7abbbd95cu,
 9535|  51.5k|            0xb080392cc4349decu, 0xbd8d794d96aacfb3u, 0xdca04777f541c567u, 0xecf0d7a0fc5583a0u,
 9536|  51.5k|            0x89e42caaf9491b60u, 0xf41686c49db57244u, 0xac5d37d5b79b6239u, 0x311c2875c522ced5u,
 9537|  51.5k|            0xd77485cb25823ac7u, 0x7d633293366b828bu, 0x86a8d39ef77164bcu, 0xae5dff9c02033197u,
 9538|  51.5k|            0xa8530886b54dbdebu, 0xd9f57f830283fdfcu, 0xd267caa862a12d66u, 0xd072df63c324fd7bu,
 9539|  51.5k|            0x8380dea93da4bc60u, 0x4247cb9e59f71e6du, 0xa46116538d0deb78u, 0x52d9be85f074e608u,
 9540|  51.5k|            0xcd795be870516656u, 0x67902e276c921f8bu, 0x806bd9714632dff6u, 0x00ba1cd8a3db53b6u,
 9541|  51.5k|            0xa086cfcd97bf97f3u, 0x80e8a40eccd228a4u, 0xc8a883c0fdaf7df0u, 0x6122cd128006b2cdu,
 9542|  51.5k|            0xfad2a4b13d1b5d6cu, 0x796b805720085f81u, 0x9cc3a6eec6311a63u, 0xcbe3303674053bb0u,
 9543|  51.5k|            0xc3f490aa77bd60fcu, 0xbedbfc4411068a9cu, 0xf4f1b4d515acb93bu, 0xee92fb5515482d44u,
 9544|  51.5k|            0x991711052d8bf3c5u, 0x751bdd152d4d1c4au, 0xbf5cd54678eef0b6u, 0xd262d45a78a0635du,
 9545|  51.5k|            0xef340a98172aace4u, 0x86fb897116c87c34u, 0x9580869f0e7aac0eu, 0xd45d35e6ae3d4da0u,
 9546|  51.5k|            0xbae0a846d2195712u, 0x8974836059cca109u, 0xe998d258869facd7u, 0x2bd1a438703fc94bu,
 9547|  51.5k|            0x91ff83775423cc06u, 0x7b6306a34627ddcfu, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d542u,
 9548|  51.5k|            0xe41f3d6a7377eecau, 0x20caba5f1d9e4a93u, 0x8e938662882af53eu, 0x547eb47b7282ee9cu,
 9549|  51.5k|            0xb23867fb2a35b28du, 0xe99e619a4f23aa43u, 0xdec681f9f4c31f31u, 0x6405fa00e2ec94d4u,
 9550|  51.5k|            0x8b3c113c38f9f37eu, 0xde83bc408dd3dd04u, 0xae0b158b4738705eu, 0x9624ab50b148d445u,
 9551|  51.5k|            0xd98ddaee19068c76u, 0x3badd624dd9b0957u, 0x87f8a8d4cfa417c9u, 0xe54ca5d70a80e5d6u,
 9552|  51.5k|            0xa9f6d30a038d1dbcu, 0x5e9fcf4ccd211f4cu, 0xd47487cc8470652bu, 0x7647c3200069671fu,
 9553|  51.5k|            0x84c8d4dfd2c63f3bu, 0x29ecd9f40041e073u, 0xa5fb0a17c777cf09u, 0xf468107100525890u,
 9554|  51.5k|            0xcf79cc9db955c2ccu, 0x7182148d4066eeb4u, 0x81ac1fe293d599bfu, 0xc6f14cd848405530u,
 9555|  51.5k|            0xa21727db38cb002fu, 0xb8ada00e5a506a7cu, 0xca9cf1d206fdc03bu, 0xa6d90811f0e4851cu,
 9556|  51.5k|            0xfd442e4688bd304au, 0x908f4a166d1da663u, 0x9e4a9cec15763e2eu, 0x9a598e4e043287feu,
 9557|  51.5k|            0xc5dd44271ad3cdbau, 0x40eff1e1853f29fdu, 0xf7549530e188c128u, 0xd12bee59e68ef47cu,
 9558|  51.5k|            0x9a94dd3e8cf578b9u, 0x82bb74f8301958ceu, 0xc13a148e3032d6e7u, 0xe36a52363c1faf01u,
 9559|  51.5k|            0xf18899b1bc3f8ca1u, 0xdc44e6c3cb279ac1u, 0x96f5600f15a7b7e5u, 0x29ab103a5ef8c0b9u,
 9560|  51.5k|            0xbcb2b812db11a5deu, 0x7415d448f6b6f0e7u, 0xebdf661791d60f56u, 0x111b495b3464ad21u,
 9561|  51.5k|            0x936b9fcebb25c995u, 0xcab10dd900beec34u, 0xb84687c269ef3bfbu, 0x3d5d514f40eea742u,
 9562|  51.5k|            0xe65829b3046b0afau, 0x0cb4a5a3112a5112u, 0x8ff71a0fe2c2e6dcu, 0x47f0e785eaba72abu,
 9563|  51.5k|            0xb3f4e093db73a093u, 0x59ed216765690f56u, 0xe0f218b8d25088b8u, 0x306869c13ec3532cu,
 9564|  51.5k|            0x8c974f7383725573u, 0x1e414218c73a13fbu, 0xafbd2350644eeacfu, 0xe5d1929ef90898fau,
 9565|  51.5k|            0xdbac6c247d62a583u, 0xdf45f746b74abf39u, 0x894bc396ce5da772u, 0x6b8bba8c328eb783u,
 9566|  51.5k|            0xab9eb47c81f5114fu, 0x066ea92f3f326564u, 0xd686619ba27255a2u, 0xc80a537b0efefebdu,
 9567|  51.5k|            0x8613fd0145877585u, 0xbd06742ce95f5f36u, 0xa798fc4196e952e7u, 0x2c48113823b73704u,
 9568|  51.5k|            0xd17f3b51fca3a7a0u, 0xf75a15862ca504c5u, 0x82ef85133de648c4u, 0x9a984d73dbe722fbu,
 9569|  51.5k|            0xa3ab66580d5fdaf5u, 0xc13e60d0d2e0ebbau, 0xcc963fee10b7d1b3u, 0x318df905079926a8u,
 9570|  51.5k|            0xffbbcfe994e5c61fu, 0xfdf17746497f7052u, 0x9fd561f1fd0f9bd3u, 0xfeb6ea8bedefa633u,
 9571|  51.5k|            0xc7caba6e7c5382c8u, 0xfe64a52ee96b8fc0u, 0xf9bd690a1b68637bu, 0x3dfdce7aa3c673b0u,
 9572|  51.5k|            0x9c1661a651213e2du, 0x06bea10ca65c084eu, 0xc31bfa0fe5698db8u, 0x486e494fcff30a62u,
 9573|  51.5k|            0xf3e2f893dec3f126u, 0x5a89dba3c3efccfau, 0x986ddb5c6b3a76b7u, 0xf89629465a75e01cu,
 9574|  51.5k|            0xbe89523386091465u, 0xf6bbb397f1135823u, 0xee2ba6c0678b597fu, 0x746aa07ded582e2cu,
 9575|  51.5k|            0x94db483840b717efu, 0xa8c2a44eb4571cdcu, 0xba121a4650e4ddebu, 0x92f34d62616ce413u,
 9576|  51.5k|            0xe896a0d7e51e1566u, 0x77b020baf9c81d17u, 0x915e2486ef32cd60u, 0x0ace1474dc1d122eu,
 9577|  51.5k|            0xb5b5ada8aaff80b8u, 0x0d819992132456bau, 0xe3231912d5bf60e6u, 0x10e1fff697ed6c69u,
 9578|  51.5k|            0x8df5efabc5979c8fu, 0xca8d3ffa1ef463c1u, 0xb1736b96b6fd83b3u, 0xbd308ff8a6b17cb2u,
 9579|  51.5k|            0xddd0467c64bce4a0u, 0xac7cb3f6d05ddbdeu, 0x8aa22c0dbef60ee4u, 0x6bcdf07a423aa96bu,
 9580|  51.5k|            0xad4ab7112eb3929du, 0x86c16c98d2c953c6u, 0xd89d64d57a607744u, 0xe871c7bf077ba8b7u,
 9581|  51.5k|            0x87625f056c7c4a8bu, 0x11471cd764ad4972u, 0xa93af6c6c79b5d2du, 0xd598e40d3dd89bcfu,
 9582|  51.5k|            0xd389b47879823479u, 0x4aff1d108d4ec2c3u, 0x843610cb4bf160cbu, 0xcedf722a585139bau,
 9583|  51.5k|            0xa54394fe1eedb8feu, 0xc2974eb4ee658828u, 0xce947a3da6a9273eu, 0x733d226229feea32u,
 9584|  51.5k|            0x811ccc668829b887u, 0x0806357d5a3f525fu, 0xa163ff802a3426a8u, 0xca07c2dcb0cf26f7u,
 9585|  51.5k|            0xc9bcff6034c13052u, 0xfc89b393dd02f0b5u, 0xfc2c3f3841f17c67u, 0xbbac2078d443ace2u,
 9586|  51.5k|            0x9d9ba7832936edc0u, 0xd54b944b84aa4c0du, 0xc5029163f384a931u, 0x0a9e795e65d4df11u,
 9587|  51.5k|            0xf64335bcf065d37du, 0x4d4617b5ff4a16d5u, 0x99ea0196163fa42eu, 0x504bced1bf8e4e45u,
 9588|  51.5k|            0xc06481fb9bcf8d39u, 0xe45ec2862f71e1d6u, 0xf07da27a82c37088u, 0x5d767327bb4e5a4cu,
 9589|  51.5k|            0x964e858c91ba2655u, 0x3a6a07f8d510f86fu, 0xbbe226efb628afeau, 0x890489f70a55368bu,
 9590|  51.5k|            0xeadab0aba3b2dbe5u, 0x2b45ac74ccea842eu, 0x92c8ae6b464fc96fu, 0x3b0b8bc90012929du,
 9591|  51.5k|            0xb77ada0617e3bbcbu, 0x09ce6ebb40173744u, 0xe55990879ddcaabdu, 0xcc420a6a101d0515u,
 9592|  51.5k|            0x8f57fa54c2a9eab6u, 0x9fa946824a12232du, 0xb32df8e9f3546564u, 0x47939822dc96abf9u,
 9593|  51.5k|            0xdff9772470297ebdu, 0x59787e2b93bc56f7u, 0x8bfbea76c619ef36u, 0x57eb4edb3c55b65au,
 9594|  51.5k|            0xaefae51477a06b03u, 0xede622920b6b23f1u, 0xdab99e59958885c4u, 0xe95fab368e45ecedu,
 9595|  51.5k|            0x88b402f7fd75539bu, 0x11dbcb0218ebb414u, 0xaae103b5fcd2a881u, 0xd652bdc29f26a119u,
 9596|  51.5k|            0xd59944a37c0752a2u, 0x4be76d3346f0495fu, 0x857fcae62d8493a5u, 0x6f70a4400c562ddbu,
 9597|  51.5k|            0xa6dfbd9fb8e5b88eu, 0xcb4ccd500f6bb952u, 0xd097ad07a71f26b2u, 0x7e2000a41346a7a7u,
 9598|  51.5k|            0x825ecc24c873782fu, 0x8ed400668c0c28c8u, 0xa2f67f2dfa90563bu, 0x728900802f0f32fau,
 9599|  51.5k|            0xcbb41ef979346bcau, 0x4f2b40a03ad2ffb9u, 0xfea126b7d78186bcu, 0xe2f610c84987bfa8u,
 9600|  51.5k|            0x9f24b832e6b0f436u, 0x0dd9ca7d2df4d7c9u, 0xc6ede63fa05d3143u, 0x91503d1c79720dbbu,
 9601|  51.5k|            0xf8a95fcf88747d94u, 0x75a44c6397ce912au, 0x9b69dbe1b548ce7cu, 0xc986afbe3ee11abau,
 9602|  51.5k|            0xc24452da229b021bu, 0xfbe85badce996168u, 0xf2d56790ab41c2a2u, 0xfae27299423fb9c3u,
 9603|  51.5k|            0x97c560ba6b0919a5u, 0xdccd879fc967d41au, 0xbdb6b8e905cb600fu, 0x5400e987bbc1c920u,
 9604|  51.5k|            0xed246723473e3813u, 0x290123e9aab23b68u, 0x9436c0760c86e30bu, 0xf9a0b6720aaf6521u,
 9605|  51.5k|            0xb94470938fa89bceu, 0xf808e40e8d5b3e69u, 0xe7958cb87392c2c2u, 0xb60b1d1230b20e04u,
 9606|  51.5k|            0x90bd77f3483bb9b9u, 0xb1c6f22b5e6f48c2u, 0xb4ecd5f01a4aa828u, 0x1e38aeb6360b1af3u,
 9607|  51.5k|            0xe2280b6c20dd5232u, 0x25c6da63c38de1b0u, 0x8d590723948a535fu, 0x579c487e5a38ad0eu,
 9608|  51.5k|            0xb0af48ec79ace837u, 0x2d835a9df0c6d851u, 0xdcdb1b2798182244u, 0xf8e431456cf88e65u,
 9609|  51.5k|            0x8a08f0f8bf0f156bu, 0x1b8e9ecb641b58ffu, 0xac8b2d36eed2dac5u, 0xe272467e3d222f3fu,
 9610|  51.5k|            0xd7adf884aa879177u, 0x5b0ed81dcc6abb0fu, 0x86ccbb52ea94baeau, 0x98e947129fc2b4e9u,
 9611|  51.5k|            0xa87fea27a539e9a5u, 0x3f2398d747b36224u, 0xd29fe4b18e88640eu, 0x8eec7f0d19a03aadu,
 9612|  51.5k|            0x83a3eeeef9153e89u, 0x1953cf68300424acu, 0xa48ceaaab75a8e2bu, 0x5fa8c3423c052dd7u,
 9613|  51.5k|            0xcdb02555653131b6u, 0x3792f412cb06794du, 0x808e17555f3ebf11u, 0xe2bbd88bbee40bd0u,
 9614|  51.5k|            0xa0b19d2ab70e6ed6u, 0x5b6aceaeae9d0ec4u, 0xc8de047564d20a8bu, 0xf245825a5a445275u,
 9615|  51.5k|            0xfb158592be068d2eu, 0xeed6e2f0f0d56712u, 0x9ced737bb6c4183du, 0x55464dd69685606bu,
 9616|  51.5k|            0xc428d05aa4751e4cu, 0xaa97e14c3c26b886u, 0xf53304714d9265dfu, 0xd53dd99f4b3066a8u,
 9617|  51.5k|            0x993fe2c6d07b7fabu, 0xe546a8038efe4029u, 0xbf8fdb78849a5f96u, 0xde98520472bdd033u,
 9618|  51.5k|            0xef73d256a5c0f77cu, 0x963e66858f6d4440u, 0x95a8637627989aadu, 0xdde7001379a44aa8u,
 9619|  51.5k|            0xbb127c53b17ec159u, 0x5560c018580d5d52u, 0xe9d71b689dde71afu, 0xaab8f01e6e10b4a6u,
 9620|  51.5k|            0x9226712162ab070du, 0xcab3961304ca70e8u, 0xb6b00d69bb55c8d1u, 0x3d607b97c5fd0d22u,
 9621|  51.5k|            0xe45c10c42a2b3b05u, 0x8cb89a7db77c506au, 0x8eb98a7a9a5b04e3u, 0x77f3608e92adb242u,
 9622|  51.5k|            0xb267ed1940f1c61cu, 0x55f038b237591ed3u, 0xdf01e85f912e37a3u, 0x6b6c46dec52f6688u,
 9623|  51.5k|            0x8b61313bbabce2c6u, 0x2323ac4b3b3da015u, 0xae397d8aa96c1b77u, 0xabec975e0a0d081au,
 9624|  51.5k|            0xd9c7dced53c72255u, 0x96e7bd358c904a21u, 0x881cea14545c7575u, 0x7e50d64177da2e54u,
 9625|  51.5k|            0xaa242499697392d2u, 0xdde50bd1d5d0b9e9u, 0xd4ad2dbfc3d07787u, 0x955e4ec64b44e864u,
 9626|  51.5k|            0x84ec3c97da624ab4u, 0xbd5af13bef0b113eu, 0xa6274bbdd0fadd61u, 0xecb1ad8aeacdd58eu,
 9627|  51.5k|            0xcfb11ead453994bau, 0x67de18eda5814af2u, 0x81ceb32c4b43fcf4u, 0x80eacf948770ced7u,
 9628|  51.5k|            0xa2425ff75e14fc31u, 0xa1258379a94d028du, 0xcad2f7f5359a3b3eu, 0x096ee45813a04330u,
 9629|  51.5k|            0xfd87b5f28300ca0du, 0x8bca9d6e188853fcu, 0x9e74d1b791e07e48u, 0x775ea264cf55347eu,
 9630|  51.5k|            0xc612062576589ddau, 0x95364afe032a819eu, 0xf79687aed3eec551u, 0x3a83ddbd83f52205u,
 9631|  51.5k|            0x9abe14cd44753b52u, 0xc4926a9672793543u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
 9632|  51.5k|            0xf1c90080baf72cb1u, 0x5324c68b12dd6339u, 0x971da05074da7beeu, 0xd3f6fc16ebca5e04u,
 9633|  51.5k|            0xbce5086492111aeau, 0x88f4bb1ca6bcf585u, 0xec1e4a7db69561a5u, 0x2b31e9e3d06c32e6u,
 9634|  51.5k|            0x9392ee8e921d5d07u, 0x3aff322e62439fd0u, 0xb877aa3236a4b449u, 0x09befeb9fad487c3u,
 9635|  51.5k|            0xe69594bec44de15bu, 0x4c2ebe687989a9b4u, 0x901d7cf73ab0acd9u, 0x0f9d37014bf60a11u,
 9636|  51.5k|            0xb424dc35095cd80fu, 0x538484c19ef38c95u, 0xe12e13424bb40e13u, 0x2865a5f206b06fbau,
 9637|  51.5k|            0x8cbccc096f5088cbu, 0xf93f87b7442e45d4u, 0xafebff0bcb24aafeu, 0xf78f69a51539d749u,
 9638|  51.5k|            0xdbe6fecebdedd5beu, 0xb573440e5a884d1cu, 0x89705f4136b4a597u, 0x31680a88f8953031u,
 9639|  51.5k|            0xabcc77118461cefcu, 0xfdc20d2b36ba7c3eu, 0xd6bf94d5e57a42bcu, 0x3d32907604691b4du,
 9640|  51.5k|            0x8637bd05af6c69b5u, 0xa63f9a49c2c1b110u, 0xa7c5ac471b478423u, 0x0fcf80dc33721d54u,
 9641|  51.5k|            0xd1b71758e219652bu, 0xd3c36113404ea4a9u, 0x83126e978d4fdf3bu, 0x645a1cac083126eau,
 9642|  51.5k|            0xa3d70a3d70a3d70au, 0x3d70a3d70a3d70a4u, 0xccccccccccccccccu, 0xcccccccccccccccdu,
 9643|  51.5k|            0x8000000000000000u, 0x0000000000000000u, 0xa000000000000000u, 0x0000000000000000u,
 9644|  51.5k|            0xc800000000000000u, 0x0000000000000000u, 0xfa00000000000000u, 0x0000000000000000u,
 9645|  51.5k|            0x9c40000000000000u, 0x0000000000000000u, 0xc350000000000000u, 0x0000000000000000u,
 9646|  51.5k|            0xf424000000000000u, 0x0000000000000000u, 0x9896800000000000u, 0x0000000000000000u,
 9647|  51.5k|            0xbebc200000000000u, 0x0000000000000000u, 0xee6b280000000000u, 0x0000000000000000u,
 9648|  51.5k|            0x9502f90000000000u, 0x0000000000000000u, 0xba43b74000000000u, 0x0000000000000000u,
 9649|  51.5k|            0xe8d4a51000000000u, 0x0000000000000000u, 0x9184e72a00000000u, 0x0000000000000000u,
 9650|  51.5k|            0xb5e620f480000000u, 0x0000000000000000u, 0xe35fa931a0000000u, 0x0000000000000000u,
 9651|  51.5k|            0x8e1bc9bf04000000u, 0x0000000000000000u, 0xb1a2bc2ec5000000u, 0x0000000000000000u,
 9652|  51.5k|            0xde0b6b3a76400000u, 0x0000000000000000u, 0x8ac7230489e80000u, 0x0000000000000000u,
 9653|  51.5k|            0xad78ebc5ac620000u, 0x0000000000000000u, 0xd8d726b7177a8000u, 0x0000000000000000u,
 9654|  51.5k|            0x878678326eac9000u, 0x0000000000000000u, 0xa968163f0a57b400u, 0x0000000000000000u,
 9655|  51.5k|            0xd3c21bcecceda100u, 0x0000000000000000u, 0x84595161401484a0u, 0x0000000000000000u,
 9656|  51.5k|            0xa56fa5b99019a5c8u, 0x0000000000000000u, 0xcecb8f27f4200f3au, 0x0000000000000000u,
 9657|  51.5k|            0x813f3978f8940984u, 0x4000000000000000u, 0xa18f07d736b90be5u, 0x5000000000000000u,
 9658|  51.5k|            0xc9f2c9cd04674edeu, 0xa400000000000000u, 0xfc6f7c4045812296u, 0x4d00000000000000u,
 9659|  51.5k|            0x9dc5ada82b70b59du, 0xf020000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u,
 9660|  51.5k|            0xf684df56c3e01bc6u, 0xc732000000000000u, 0x9a130b963a6c115cu, 0x3c7f400000000000u,
 9661|  51.5k|            0xc097ce7bc90715b3u, 0x4b9f100000000000u, 0xf0bdc21abb48db20u, 0x1e86d40000000000u,
 9662|  51.5k|            0x96769950b50d88f4u, 0x1314448000000000u, 0xbc143fa4e250eb31u, 0x17d955a000000000u,
 9663|  51.5k|            0xeb194f8e1ae525fdu, 0x5dcfab0800000000u, 0x92efd1b8d0cf37beu, 0x5aa1cae500000000u,
 9664|  51.5k|            0xb7abc627050305adu, 0xf14a3d9e40000000u, 0xe596b7b0c643c719u, 0x6d9ccd05d0000000u,
 9665|  51.5k|            0x8f7e32ce7bea5c6fu, 0xe4820023a2000000u, 0xb35dbf821ae4f38bu, 0xdda2802c8a800000u,
 9666|  51.5k|            0xe0352f62a19e306eu, 0xd50b2037ad200000u, 0x8c213d9da502de45u, 0x4526f422cc340000u,
 9667|  51.5k|            0xaf298d050e4395d6u, 0x9670b12b7f410000u, 0xdaf3f04651d47b4cu, 0x3c0cdd765f114000u,
 9668|  51.5k|            0x88d8762bf324cd0fu, 0xa5880a69fb6ac800u, 0xab0e93b6efee0053u, 0x8eea0d047a457a00u,
 9669|  51.5k|            0xd5d238a4abe98068u, 0x72a4904598d6d880u, 0x85a36366eb71f041u, 0x47a6da2b7f864750u,
 9670|  51.5k|            0xa70c3c40a64e6c51u, 0x999090b65f67d924u, 0xd0cf4b50cfe20765u, 0xfff4b4e3f741cf6du,
 9671|  51.5k|            0x82818f1281ed449fu, 0xbff8f10e7a8921a4u, 0xa321f2d7226895c7u, 0xaff72d52192b6a0du,
 9672|  51.5k|            0xcbea6f8ceb02bb39u, 0x9bf4f8a69f764490u, 0xfee50b7025c36a08u, 0x02f236d04753d5b4u,
 9673|  51.5k|            0x9f4f2726179a2245u, 0x01d762422c946590u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef5u,
 9674|  51.5k|            0xf8ebad2b84e0d58bu, 0xd2e0898765a7deb2u, 0x9b934c3b330c8577u, 0x63cc55f49f88eb2fu,
 9675|  51.5k|            0xc2781f49ffcfa6d5u, 0x3cbf6b71c76b25fbu, 0xf316271c7fc3908au, 0x8bef464e3945ef7au,
 9676|  51.5k|            0x97edd871cfda3a56u, 0x97758bf0e3cbb5acu, 0xbde94e8e43d0c8ecu, 0x3d52eeed1cbea317u,
 9677|  51.5k|            0xed63a231d4c4fb27u, 0x4ca7aaa863ee4bddu, 0x945e455f24fb1cf8u, 0x8fe8caa93e74ef6au,
 9678|  51.5k|            0xb975d6b6ee39e436u, 0xb3e2fd538e122b44u, 0xe7d34c64a9c85d44u, 0x60dbbca87196b616u,
 9679|  51.5k|            0x90e40fbeea1d3a4au, 0xbc8955e946fe31cdu, 0xb51d13aea4a488ddu, 0x6babab6398bdbe41u,
 9680|  51.5k|            0xe264589a4dcdab14u, 0xc696963c7eed2dd1u, 0x8d7eb76070a08aecu, 0xfc1e1de5cf543ca2u,
 9681|  51.5k|            0xb0de65388cc8ada8u, 0x3b25a55f43294bcbu, 0xdd15fe86affad912u, 0x49ef0eb713f39ebeu,
 9682|  51.5k|            0x8a2dbf142dfcc7abu, 0x6e3569326c784337u, 0xacb92ed9397bf996u, 0x49c2c37f07965404u,
 9683|  51.5k|            0xd7e77a8f87daf7fbu, 0xdc33745ec97be906u, 0x86f0ac99b4e8dafdu, 0x69a028bb3ded71a3u,
 9684|  51.5k|            0xa8acd7c0222311bcu, 0xc40832ea0d68ce0cu, 0xd2d80db02aabd62bu, 0xf50a3fa490c30190u,
 9685|  51.5k|            0x83c7088e1aab65dbu, 0x792667c6da79e0fau, 0xa4b8cab1a1563f52u, 0x577001b891185938u,
 9686|  51.5k|            0xcde6fd5e09abcf26u, 0xed4c0226b55e6f86u, 0x80b05e5ac60b6178u, 0x544f8158315b05b4u,
 9687|  51.5k|            0xa0dc75f1778e39d6u, 0x696361ae3db1c721u, 0xc913936dd571c84cu, 0x03bc3a19cd1e38e9u,
 9688|  51.5k|            0xfb5878494ace3a5fu, 0x04ab48a04065c723u, 0x9d174b2dcec0e47bu, 0x62eb0d64283f9c76u,
 9689|  51.5k|            0xc45d1df942711d9au, 0x3ba5d0bd324f8394u, 0xf5746577930d6500u, 0xca8f44ec7ee36479u,
 9690|  51.5k|            0x9968bf6abbe85f20u, 0x7e998b13cf4e1ecbu, 0xbfc2ef456ae276e8u, 0x9e3fedd8c321a67eu,
 9691|  51.5k|            0xefb3ab16c59b14a2u, 0xc5cfe94ef3ea101eu, 0x95d04aee3b80ece5u, 0xbba1f1d158724a12u,
 9692|  51.5k|            0xbb445da9ca61281fu, 0x2a8a6e45ae8edc97u, 0xea1575143cf97226u, 0xf52d09d71a3293bdu,
 9693|  51.5k|            0x924d692ca61be758u, 0x593c2626705f9c56u, 0xb6e0c377cfa2e12eu, 0x6f8b2fb00c77836cu,
 9694|  51.5k|            0xe498f455c38b997au, 0x0b6dfb9c0f956447u, 0x8edf98b59a373fecu, 0x4724bd4189bd5eacu,
 9695|  51.5k|            0xb2977ee300c50fe7u, 0x58edec91ec2cb657u, 0xdf3d5e9bc0f653e1u, 0x2f2967b66737e3edu,
 9696|  51.5k|            0x8b865b215899f46cu, 0xbd79e0d20082ee74u, 0xae67f1e9aec07187u, 0xecd8590680a3aa11u,
 9697|  51.5k|            0xda01ee641a708de9u, 0xe80e6f4820cc9495u, 0x884134fe908658b2u, 0x3109058d147fdcddu,
 9698|  51.5k|            0xaa51823e34a7eedeu, 0xbd4b46f0599fd415u, 0xd4e5e2cdc1d1ea96u, 0x6c9e18ac7007c91au,
 9699|  51.5k|            0x850fadc09923329eu, 0x03e2cf6bc604ddb0u, 0xa6539930bf6bff45u, 0x84db8346b786151cu,
 9700|  51.5k|            0xcfe87f7cef46ff16u, 0xe612641865679a63u, 0x81f14fae158c5f6eu, 0x4fcb7e8f3f60c07eu,
 9701|  51.5k|            0xa26da3999aef7749u, 0xe3be5e330f38f09du, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc5u,
 9702|  51.5k|            0xfdcb4fa002162a63u, 0x73d9732fc7c8f7f6u, 0x9e9f11c4014dda7eu, 0x2867e7fddcdd9afau,
 9703|  51.5k|            0xc646d63501a1511du, 0xb281e1fd541501b8u, 0xf7d88bc24209a565u, 0x1f225a7ca91a4226u,
 9704|  51.5k|            0x9ae757596946075fu, 0x3375788de9b06958u, 0xc1a12d2fc3978937u, 0x0052d6b1641c83aeu,
 9705|  51.5k|            0xf209787bb47d6b84u, 0xc0678c5dbd23a49au, 0x9745eb4d50ce6332u, 0xf840b7ba963646e0u,
 9706|  51.5k|            0xbd176620a501fbffu, 0xb650e5a93bc3d898u, 0xec5d3fa8ce427affu, 0xa3e51f138ab4cebeu,
 9707|  51.5k|            0x93ba47c980e98cdfu, 0xc66f336c36b10137u, 0xb8a8d9bbe123f017u, 0xb80b0047445d4184u,
 9708|  51.5k|            0xe6d3102ad96cec1du, 0xa60dc059157491e5u, 0x9043ea1ac7e41392u, 0x87c89837ad68db2fu,
 9709|  51.5k|            0xb454e4a179dd1877u, 0x29babe4598c311fbu, 0xe16a1dc9d8545e94u, 0xf4296dd6fef3d67au,
 9710|  51.5k|            0x8ce2529e2734bb1du, 0x1899e4a65f58660cu, 0xb01ae745b101e9e4u, 0x5ec05dcff72e7f8fu,
 9711|  51.5k|            0xdc21a1171d42645du, 0x76707543f4fa1f73u, 0x899504ae72497ebau, 0x6a06494a791c53a8u,
 9712|  51.5k|            0xabfa45da0edbde69u, 0x0487db9d17636892u, 0xd6f8d7509292d603u, 0x45a9d2845d3c42b6u,
 9713|  51.5k|            0x865b86925b9bc5c2u, 0x0b8a2392ba45a9b2u, 0xa7f26836f282b732u, 0x8e6cac7768d7141eu,
 9714|  51.5k|            0xd1ef0244af2364ffu, 0x3207d795430cd926u, 0x8335616aed761f1fu, 0x7f44e6bd49e807b8u,
 9715|  51.5k|            0xa402b9c5a8d3a6e7u, 0x5f16206c9c6209a6u, 0xcd036837130890a1u, 0x36dba887c37a8c0fu,
 9716|  51.5k|            0x802221226be55a64u, 0xc2494954da2c9789u, 0xa02aa96b06deb0fdu, 0xf2db9baa10b7bd6cu,
 9717|  51.5k|            0xc83553c5c8965d3du, 0x6f92829494e5acc7u, 0xfa42a8b73abbf48cu, 0xcb772339ba1f17f9u,
 9718|  51.5k|            0x9c69a97284b578d7u, 0xff2a760414536efbu, 0xc38413cf25e2d70du, 0xfef5138519684abau,
 9719|  51.5k|            0xf46518c2ef5b8cd1u, 0x7eb258665fc25d69u, 0x98bf2f79d5993802u, 0xef2f773ffbd97a61u,
 9720|  51.5k|            0xbeeefb584aff8603u, 0xaafb550ffacfd8fau, 0xeeaaba2e5dbf6784u, 0x95ba2a53f983cf38u,
 9721|  51.5k|            0x952ab45cfa97a0b2u, 0xdd945a747bf26183u, 0xba756174393d88dfu, 0x94f971119aeef9e4u,
 9722|  51.5k|            0xe912b9d1478ceb17u, 0x7a37cd5601aab85du, 0x91abb422ccb812eeu, 0xac62e055c10ab33au,
 9723|  51.5k|            0xb616a12b7fe617aau, 0x577b986b314d6009u, 0xe39c49765fdf9d94u, 0xed5a7e85fda0b80bu,
 9724|  51.5k|            0x8e41ade9fbebc27du, 0x14588f13be847307u, 0xb1d219647ae6b31cu, 0x596eb2d8ae258fc8u,
 9725|  51.5k|            0xde469fbd99a05fe3u, 0x6fca5f8ed9aef3bbu, 0x8aec23d680043beeu, 0x25de7bb9480d5854u,
 9726|  51.5k|            0xada72ccc20054ae9u, 0xaf561aa79a10ae6au, 0xd910f7ff28069da4u, 0x1b2ba1518094da04u,
 9727|  51.5k|            0x87aa9aff79042286u, 0x90fb44d2f05d0842u, 0xa99541bf57452b28u, 0x353a1607ac744a53u,
 9728|  51.5k|            0xd3fa922f2d1675f2u, 0x42889b8997915ce8u, 0x847c9b5d7c2e09b7u, 0x69956135febada11u,
 9729|  51.5k|            0xa59bc234db398c25u, 0x43fab9837e699095u, 0xcf02b2c21207ef2eu, 0x94f967e45e03f4bbu,
 9730|  51.5k|            0x8161afb94b44f57du, 0x1d1be0eebac278f5u, 0xa1ba1ba79e1632dcu, 0x6462d92a69731732u,
 9731|  51.5k|            0xca28a291859bbf93u, 0x7d7b8f7503cfdcfeu, 0xfcb2cb35e702af78u, 0x5cda735244c3d43eu,
 9732|  51.5k|            0x9defbf01b061adabu, 0x3a0888136afa64a7u, 0xc56baec21c7a1916u, 0x088aaa1845b8fdd0u,
 9733|  51.5k|            0xf6c69a72a3989f5bu, 0x8aad549e57273d45u, 0x9a3c2087a63f6399u, 0x36ac54e2f678864bu,
 9734|  51.5k|            0xc0cb28a98fcf3c7fu, 0x84576a1bb416a7ddu, 0xf0fdf2d3f3c30b9fu, 0x656d44a2a11c51d5u,
 9735|  51.5k|            0x969eb7c47859e743u, 0x9f644ae5a4b1b325u, 0xbc4665b596706114u, 0x873d5d9f0dde1feeu,
 9736|  51.5k|            0xeb57ff22fc0c7959u, 0xa90cb506d155a7eau, 0x9316ff75dd87cbd8u, 0x09a7f12442d588f2u,
 9737|  51.5k|            0xb7dcbf5354e9beceu, 0x0c11ed6d538aeb2fu, 0xe5d3ef282a242e81u, 0x8f1668c8a86da5fau,
 9738|  51.5k|            0x8fa475791a569d10u, 0xf96e017d694487bcu, 0xb38d92d760ec4455u, 0x37c981dcc395a9acu,
 9739|  51.5k|            0xe070f78d3927556au, 0x85bbe253f47b1417u, 0x8c469ab843b89562u, 0x93956d7478ccec8eu,
 9740|  51.5k|            0xaf58416654a6babbu, 0x387ac8d1970027b2u, 0xdb2e51bfe9d0696au, 0x06997b05fcc0319eu,
 9741|  51.5k|            0x88fcf317f22241e2u, 0x441fece3bdf81f03u, 0xab3c2fddeeaad25au, 0xd527e81cad7626c3u,
 9742|  51.5k|            0xd60b3bd56a5586f1u, 0x8a71e223d8d3b074u, 0x85c7056562757456u, 0xf6872d5667844e49u,
 9743|  51.5k|            0xa738c6bebb12d16cu, 0xb428f8ac016561dbu, 0xd106f86e69d785c7u, 0xe13336d701beba52u,
 9744|  51.5k|            0x82a45b450226b39cu, 0xecc0024661173473u, 0xa34d721642b06084u, 0x27f002d7f95d0190u,
 9745|  51.5k|            0xcc20ce9bd35c78a5u, 0x31ec038df7b441f4u, 0xff290242c83396ceu, 0x7e67047175a15271u,
 9746|  51.5k|            0x9f79a169bd203e41u, 0x0f0062c6e984d386u, 0xc75809c42c684dd1u, 0x52c07b78a3e60868u,
 9747|  51.5k|            0xf92e0c3537826145u, 0xa7709a56ccdf8a82u, 0x9bbcc7a142b17ccbu, 0x88a66076400bb691u,
 9748|  51.5k|            0xc2abf989935ddbfeu, 0x6acff893d00ea435u, 0xf356f7ebf83552feu, 0x0583f6b8c4124d43u,
 9749|  51.5k|            0x98165af37b2153deu, 0xc3727a337a8b704au, 0xbe1bf1b059e9a8d6u, 0x744f18c0592e4c5cu,
 9750|  51.5k|            0xeda2ee1c7064130cu, 0x1162def06f79df73u, 0x9485d4d1c63e8be7u, 0x8addcb5645ac2ba8u,
 9751|  51.5k|            0xb9a74a0637ce2ee1u, 0x6d953e2bd7173692u, 0xe8111c87c5c1ba99u, 0xc8fa8db6ccdd0437u,
 9752|  51.5k|            0x910ab1d4db9914a0u, 0x1d9c9892400a22a2u, 0xb54d5e4a127f59c8u, 0x2503beb6d00cab4bu,
 9753|  51.5k|            0xe2a0b5dc971f303au, 0x2e44ae64840fd61du, 0x8da471a9de737e24u, 0x5ceaecfed289e5d2u,
 9754|  51.5k|            0xb10d8e1456105dadu, 0x7425a83e872c5f47u, 0xdd50f1996b947518u, 0xd12f124e28f77719u,
 9755|  51.5k|            0x8a5296ffe33cc92fu, 0x82bd6b70d99aaa6fu, 0xace73cbfdc0bfb7bu, 0x636cc64d1001550bu,
 9756|  51.5k|            0xd8210befd30efa5au, 0x3c47f7e05401aa4eu, 0x8714a775e3e95c78u, 0x65acfaec34810a71u,
 9757|  51.5k|            0xa8d9d1535ce3b396u, 0x7f1839a741a14d0du, 0xd31045a8341ca07cu, 0x1ede48111209a050u,
 9758|  51.5k|            0x83ea2b892091e44du, 0x934aed0aab460432u, 0xa4e4b66b68b65d60u, 0xf81da84d5617853fu,
 9759|  51.5k|            0xce1de40642e3f4b9u, 0x36251260ab9d668eu, 0x80d2ae83e9ce78f3u, 0xc1d72b7c6b426019u,
 9760|  51.5k|            0xa1075a24e4421730u, 0xb24cf65b8612f81fu, 0xc94930ae1d529cfcu, 0xdee033f26797b627u,
 9761|  51.5k|            0xfb9b7cd9a4a7443cu, 0x169840ef017da3b1u, 0x9d412e0806e88aa5u, 0x8e1f289560ee864eu,
 9762|  51.5k|            0xc491798a08a2ad4eu, 0xf1a6f2bab92a27e2u, 0xf5b5d7ec8acb58a2u, 0xae10af696774b1dbu,
 9763|  51.5k|            0x9991a6f3d6bf1765u, 0xacca6da1e0a8ef29u, 0xbff610b0cc6edd3fu, 0x17fd090a58d32af3u,
 9764|  51.5k|            0xeff394dcff8a948eu, 0xddfc4b4cef07f5b0u, 0x95f83d0a1fb69cd9u, 0x4abdaf101564f98eu,
 9765|  51.5k|            0xbb764c4ca7a4440fu, 0x9d6d1ad41abe37f1u, 0xea53df5fd18d5513u, 0x84c86189216dc5edu,
 9766|  51.5k|            0x92746b9be2f8552cu, 0x32fd3cf5b4e49bb4u, 0xb7118682dbb66a77u, 0x3fbc8c33221dc2a1u,
 9767|  51.5k|            0xe4d5e82392a40515u, 0x0fabaf3feaa5334au, 0x8f05b1163ba6832du, 0x29cb4d87f2a7400eu,
 9768|  51.5k|            0xb2c71d5bca9023f8u, 0x743e20e9ef511012u, 0xdf78e4b2bd342cf6u, 0x914da9246b255416u,
 9769|  51.5k|            0x8bab8eefb6409c1au, 0x1ad089b6c2f7548eu, 0xae9672aba3d0c320u, 0xa184ac2473b529b1u,
 9770|  51.5k|            0xda3c0f568cc4f3e8u, 0xc9e5d72d90a2741eu, 0x8865899617fb1871u, 0x7e2fa67c7a658892u,
 9771|  51.5k|            0xaa7eebfb9df9de8du, 0xddbb901b98feeab7u, 0xd51ea6fa85785631u, 0x552a74227f3ea565u,
 9772|  51.5k|            0x8533285c936b35deu, 0xd53a88958f87275fu, 0xa67ff273b8460356u, 0x8a892abaf368f137u,
 9773|  51.5k|            0xd01fef10a657842cu, 0x2d2b7569b0432d85u, 0x8213f56a67f6b29bu, 0x9c3b29620e29fc73u,
 9774|  51.5k|            0xa298f2c501f45f42u, 0x8349f3ba91b47b8fu, 0xcb3f2f7642717713u, 0x241c70a936219a73u,
 9775|  51.5k|            0xfe0efb53d30dd4d7u, 0xed238cd383aa0110u, 0x9ec95d1463e8a506u, 0xf4363804324a40aau,
 9776|  51.5k|            0xc67bb4597ce2ce48u, 0xb143c6053edcd0d5u, 0xf81aa16fdc1b81dau, 0xdd94b7868e94050au,
 9777|  51.5k|            0x9b10a4e5e9913128u, 0xca7cf2b4191c8326u, 0xc1d4ce1f63f57d72u, 0xfd1c2f611f63a3f0u,
 9778|  51.5k|            0xf24a01a73cf2dccfu, 0xbc633b39673c8cecu, 0x976e41088617ca01u, 0xd5be0503e085d813u,
 9779|  51.5k|            0xbd49d14aa79dbc82u, 0x4b2d8644d8a74e18u, 0xec9c459d51852ba2u, 0xddf8e7d60ed1219eu,
 9780|  51.5k|            0x93e1ab8252f33b45u, 0xcabb90e5c942b503u, 0xb8da1662e7b00a17u, 0x3d6a751f3b936243u,
 9781|  51.5k|            0xe7109bfba19c0c9du, 0x0cc512670a783ad4u, 0x906a617d450187e2u, 0x27fb2b80668b24c5u,
 9782|  51.5k|            0xb484f9dc9641e9dau, 0xb1f9f660802dedf6u, 0xe1a63853bbd26451u, 0x5e7873f8a0396973u,
 9783|  51.5k|            0x8d07e33455637eb2u, 0xdb0b487b6423e1e8u, 0xb049dc016abc5e5fu, 0x91ce1a9a3d2cda62u,
 9784|  51.5k|            0xdc5c5301c56b75f7u, 0x7641a140cc7810fbu, 0x89b9b3e11b6329bau, 0xa9e904c87fcb0a9du,
 9785|  51.5k|            0xac2820d9623bf429u, 0x546345fa9fbdcd44u, 0xd732290fbacaf133u, 0xa97c177947ad4095u,
 9786|  51.5k|            0x867f59a9d4bed6c0u, 0x49ed8eabcccc485du, 0xa81f301449ee8c70u, 0x5c68f256bfff5a74u,
 9787|  51.5k|            0xd226fc195c6a2f8cu, 0x73832eec6fff3111u, 0x83585d8fd9c25db7u, 0xc831fd53c5ff7eabu,
 9788|  51.5k|            0xa42e74f3d032f525u, 0xba3e7ca8b77f5e55u, 0xcd3a1230c43fb26fu, 0x28ce1bd2e55f35ebu,
 9789|  51.5k|            0x80444b5e7aa7cf85u, 0x7980d163cf5b81b3u, 0xa0555e361951c366u, 0xd7e105bcc332621fu,
 9790|  51.5k|            0xc86ab5c39fa63440u, 0x8dd9472bf3fefaa7u, 0xfa856334878fc150u, 0xb14f98f6f0feb951u,
 9791|  51.5k|            0x9c935e00d4b9d8d2u, 0x6ed1bf9a569f33d3u, 0xc3b8358109e84f07u, 0x0a862f80ec4700c8u,
 9792|  51.5k|            0xf4a642e14c6262c8u, 0xcd27bb612758c0fau, 0x98e7e9cccfbd7dbdu, 0x8038d51cb897789cu,
 9793|  51.5k|            0xbf21e44003acdd2cu, 0xe0470a63e6bd56c3u, 0xeeea5d5004981478u, 0x1858ccfce06cac74u,
 9794|  51.5k|            0x95527a5202df0ccbu, 0x0f37801e0c43ebc8u, 0xbaa718e68396cffdu, 0xd30560258f54e6bau,
 9795|  51.5k|            0xe950df20247c83fdu, 0x47c6b82ef32a2069u, 0x91d28b7416cdd27eu, 0x4cdc331d57fa5441u,
 9796|  51.5k|            0xb6472e511c81471du, 0xe0133fe4adf8e952u, 0xe3d8f9e563a198e5u, 0x58180fddd97723a6u,
 9797|  51.5k|            0x8e679c2f5e44ff8fu, 0x570f09eaa7ea7648u,
 9798|  51.5k|        }
 9799|  51.5k|    };
 9800|  51.5k|    return table;
 9801|  51.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13umul192_hi128Emmm:
26437|  30.1k|{
26438|  30.1k|    const uint128_parts p = full_multiplication(x_hi, y);
26439|  30.1k|    uint128_parts r{};
26440|  30.1k|    r.low = p.low + full_multiplication(x_lo, y).high;
26441|  30.1k|    r.high = p.high + (r.low < p.low ? 1u : 0u);
  ------------------
  |  Branch (26441:24): [True: 138, False: 30.0k]
  ------------------
26442|  30.1k|    return r;
26443|  30.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij16umul128_add_hi64Emmm:
26447|  32.2k|{
26448|  32.2k|    const uint128_parts p = full_multiplication(x, y);
26449|  32.2k|    return p.high + (p.low + c < p.low ? 1u : 0u);
  ------------------
  |  Branch (26449:22): [True: 10.1k, False: 22.1k]
  ------------------
26450|  32.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalE:
27689|  30.1k|{
27690|  30.1k|    const std::uint64_t sig = d.integral;
27691|  30.1k|    if (JSON_HEDLEY_UNLIKELY(sig < 100000000000000u || sig >= 10000000000000000u))
  ------------------
  |  | 1667|  56.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3.64k, False: 26.5k]
  |  |  |  Branch (1667:94): [True: 3.64k, False: 26.5k]
  |  |  |  Branch (1667:94): [True: 0, False: 26.5k]
  |  |  ------------------
  ------------------
27692|  3.64k|    {
27693|       |        // (subnormals)
27694|  3.64k|        return d.has_digit ? write_decimal(first, (sig * 10) + d.digit, d.exponent) : write_decimal(first, sig, d.exponent + 1);
  ------------------
  |  Branch (27694:16): [True: 1.75k, False: 1.88k]
  ------------------
27695|  3.64k|    }
27696|  26.5k|    const bool sixteen = sig >= 1000000000000000u; // (else 15 digits)
27697|  26.5k|    const int last = d.has_digit ? d.digit : 0;
  ------------------
  |  Branch (27697:22): [True: 6.68k, False: 19.8k]
  ------------------
27698|  26.5k|    const std::uint64_t upper = sig / 100000000u;
27699|  26.5k|#if JSON_DTOA_SSE2
27700|       |    // NOLINTBEGIN(portability-simd-intrinsics)
27701|       |    // the two halves in the 64-bit lanes, each as abcd * 2^32 + efgh, then as
27702|       |    // bytes (as eight_digit_bytes(), one lane each)
27703|  26.5k|    const __m128i x = _mm_set_epi64x(static_cast<long long>(sig - (upper * 100000000u)), static_cast<long long>(upper)); // NOLINT(runtime/int)
27704|  26.5k|    const __m128i abcd = _mm_srli_epi64(_mm_mul_epu32(x, _mm_set1_epi64x(109951163)), 40); // 2^40 / 10000 + 1
27705|  26.5k|    const __m128i abcd_efgh = _mm_add_epi64(x, _mm_mul_epu32(abcd, _mm_set1_epi64x(4294957296))); // 2^32 - 10000
27706|       |    // 32-bit lanes in the order of the text: abcd, efgh of both halves
27707|  26.5k|    const __m128i fours = _mm_shuffle_epi32(abcd_efgh, _MM_SHUFFLE(2, 3, 0, 1));
27708|  26.5k|    const __m128i ab = _mm_srli_epi16(_mm_mulhi_epu16(fours, _mm_set1_epi32(5243)), 3);
27709|  26.5k|    const __m128i ab_cd = _mm_or_si128(_mm_slli_epi32(_mm_sub_epi16(fours, _mm_mullo_epi16(ab, _mm_set1_epi32(100))), 16), ab);
27710|       |    // 16-bit lanes ab (< 100) -> bytes a, b: 256 * ab - 2559 * (ab / 10)
27711|  26.5k|    const __m128i bytes = _mm_sub_epi16(_mm_slli_epi16(ab_cd, 8), _mm_mullo_epi16(_mm_set1_epi16(2559), _mm_mulhi_epu16(ab_cd, _mm_set1_epi16(6554))));
27712|       |    // the last digit that is not 0 (sig is not 0)
27713|  26.5k|    const auto nonzero = static_cast<std::uint64_t>(_mm_movemask_epi8(_mm_cmpgt_epi8(bytes, _mm_setzero_si128())));
27714|  26.5k|    const int digits = 63 - count_leading_zeros(nonzero) + (sixteen ? 1 : 0); // without trailing zeros
  ------------------
  |  Branch (27714:61): [True: 23.0k, False: 3.42k]
  ------------------
27715|  26.5k|    const __m128i chars = _mm_add_epi8(bytes, _mm_set1_epi8('0'));
27716|       |    // the 16 characters from the first digit
27717|  26.5k|    const __m128i s = sixteen ? chars : _mm_or_si128(_mm_srli_si128(chars, 1), _mm_slli_si128(_mm_cvtsi32_si128('0' + last), 15));
  ------------------
  |  Branch (27717:23): [True: 23.0k, False: 3.42k]
  ------------------
27718|  26.5k|    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
  ------------------
  |  Branch (27718:40): [True: 23.0k, False: 3.42k]
  ------------------
27719|  26.5k|    const auto store_16 = [&s](char* p) noexcept
27720|  26.5k|    {
27721|  26.5k|        std::memcpy(p, &s, 16);
27722|  26.5k|    };
27723|  26.5k|    const char first_digit = static_cast<char>(_mm_cvtsi128_si32(s));
27724|       |    // NOLINTEND(portability-simd-intrinsics)
27725|       |#elif JSON_DTOA_NEON
27726|       |    // as with SSE2: the halves in 32-bit lanes, then abcd, efgh of both
27727|       |    const uint32x2_t halves = vcreate_u32(upper | ((sig - (upper * 100000000u)) << 32u));
27728|       |    const uint32x2_t abcd = vmovn_u64(vshrq_n_u64(vmull_n_u32(halves, static_cast<std::uint32_t>(((std::uint64_t{1} << 40u) / 10000u) + 1u)), 40));
27729|       |    const uint32x2_t efgh = vmls_n_u32(halves, abcd, 10000u);
27730|       |    const uint32x4_t fours = vcombine_u32(vzip1_u32(abcd, efgh), vzip2_u32(abcd, efgh));
27731|       |    const uint32x4_t ab = vshrq_n_u32(vmulq_n_u32(fours, 5243u), 19);
27732|       |    const uint16x8_t ab_cd = vreinterpretq_u16_u32(vorrq_u32(ab, vshlq_n_u32(vmlsq_n_u32(fours, ab, 100u), 16)));
27733|       |    const uint16x8_t tens = vshrq_n_u16(vmulq_n_u16(ab_cd, 103u), 10);
27734|       |    const uint8x16_t bytes = vreinterpretq_u8_u16(vorrq_u16(tens, vshlq_n_u16(vmlsq_n_u16(ab_cd, tens, 10u), 8)));
27735|       |    // the last digit that is not 0 (sig is not 0): a nibble per byte
27736|       |    const std::uint64_t nonzero = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(vtstq_u8(bytes, bytes)), 4)), 0);
27737|       |    const int digits = ((63 - count_leading_zeros(nonzero)) / 4) + (sixteen ? 1 : 0); // without trailing zeros
27738|       |    const uint8x16_t chars = vaddq_u8(bytes, vdupq_n_u8('0'));
27739|       |    // the 16 characters from the first digit
27740|       |    const uint8x16_t s = sixteen ? chars : vextq_u8(chars, vdupq_n_u8(static_cast<std::uint8_t>('0' + last)), 1);
27741|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27742|       |    const auto store_16 = [&s](char* p) noexcept
27743|       |    {
27744|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(p), s); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27745|       |    };
27746|       |    const auto first_digit = static_cast<char>(vgetq_lane_u8(s, 0));
27747|       |#else
27748|       |    const std::uint64_t hi = eight_digit_bytes(upper);
27749|       |    const std::uint64_t lo = eight_digit_bytes(sig - (upper * 100000000u));
27750|       |    // trailing zero digits: zero bytes (sig is not 0)
27751|       |    const int zeros = lo != 0 ? count_trailing_zeros(lo) / 8 : 8 + (count_trailing_zeros(hi) / 8);
27752|       |    const int digits = 15 - zeros + (sixteen ? 1 : 0); // without trailing zeros
27753|       |    // the 16 characters from the first digit
27754|       |    const std::uint64_t s_hi = (sixteen ? hi : (hi << 8u) | (lo >> 56u)) + 0x3030303030303030u;
27755|       |    const std::uint64_t s_lo = (sixteen ? lo : (lo << 8u) | static_cast<std::uint64_t>(last)) + 0x3030303030303030u;
27756|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27757|       |    const auto store_16 = [s_hi, s_lo](char* p) noexcept
27758|       |    {
27759|       |        store_msb_first(p, s_hi);
27760|       |        store_msb_first(p + 8, s_lo);
27761|       |    };
27762|       |    const auto first_digit = static_cast<char>(s_hi >> 56u);
27763|       |#endif
27764|  26.5k|    const int len = d.has_digit ? 16 + (sixteen ? 1 : 0) : digits; // significant digits
  ------------------
  |  Branch (27764:21): [True: 6.68k, False: 19.8k]
  |  Branch (27764:41): [True: 4.55k, False: 2.13k]
  ------------------
27765|  26.5k|    const int n = 16 + (sixteen ? 1 : 0) + d.exponent;           // digits before the point
  ------------------
  |  Branch (27765:25): [True: 23.0k, False: 3.42k]
  ------------------
27766|       |
27767|  26.5k|    if (JSON_HEDLEY_LIKELY(n >= 1 && n <= 15))
  ------------------
  |  | 1666|  44.2k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 13.9k, False: 12.5k]
  |  |  |  Branch (1666:94): [True: 17.7k, False: 8.77k]
  |  |  |  Branch (1666:94): [True: 13.9k, False: 3.80k]
  |  |  ------------------
  ------------------
27768|  13.9k|    {
27769|       |        // "dig.its" and "digits[000].0": the digits after the point move by
27770|       |        // one byte ('0's follow the digits)
27771|  13.9k|#if JSON_DTOA_SSE2
27772|       |        // NOLINTBEGIN(portability-simd-intrinsics)
27773|       |        // (in the register: reading the digits back from memory right after
27774|       |        // storing them waits until the stores are done)
27775|  13.9k|        const __m128i at = _mm_set1_epi8(static_cast<char>(n));
27776|  13.9k|        const __m128i index = _mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
27777|  13.9k|        const __m128i before = _mm_cmpgt_epi8(at, index);
27778|  13.9k|        const __m128i after = _mm_cmpgt_epi8(index, at);
27779|  13.9k|        const __m128i text = _mm_or_si128(_mm_or_si128(_mm_and_si128(s, before), _mm_and_si128(_mm_slli_si128(s, 1), after)),
27780|  13.9k|                                          _mm_andnot_si128(_mm_or_si128(before, after), _mm_set1_epi8('.')));
27781|  13.9k|        std::memcpy(first, &text, 16);
27782|  13.9k|        first[16] = static_cast<char>(_mm_extract_epi16(s, 7) >> 8);
27783|  13.9k|        first[17] = s16;
27784|       |        // NOLINTEND(portability-simd-intrinsics)
27785|       |#elif JSON_DTOA_NEON
27786|       |        const uint8x16_t index = vcombine_u8(vcreate_u8(0x0706050403020100u), vcreate_u8(0x0F0E0D0C0B0A0908u));
27787|       |        const uint8x16_t at = vdupq_n_u8(static_cast<std::uint8_t>(n));
27788|       |        const uint8x16_t after_point = vbslq_u8(vcgtq_u8(index, at), vextq_u8(vdupq_n_u8(0), s, 15), vdupq_n_u8('.'));
27789|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(first), vbslq_u8(vcltq_u8(index, at), s, after_point)); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27790|       |        first[16] = static_cast<char>(vgetq_lane_u8(s, 15));
27791|       |        first[17] = s16;
27792|       |#else
27793|       |        store_16(first);
27794|       |        first[16] = s16;
27795|       |        std::uint64_t after_point[2]; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27796|       |        std::memcpy(after_point, first + n, 16);
27797|       |        std::memcpy(first + n + 1, after_point, 16);
27798|       |        first[n] = '.';
27799|       |#endif
27800|  13.9k|        return first + (n >= len ? n + 2 : len + 1);
  ------------------
  |  Branch (27800:25): [True: 12.7k, False: 1.21k]
  ------------------
27801|  13.9k|    }
27802|  12.5k|    if (n <= 0 && n > -4)
  ------------------
  |  Branch (27802:9): [True: 8.77k, False: 3.80k]
  |  Branch (27802:19): [True: 3.28k, False: 5.49k]
  ------------------
27803|  3.28k|    {
27804|       |        // "0.[000]digits"
27805|  3.28k|        std::memset(first, '0', 8);
27806|  3.28k|        first[1] = '.';
27807|  3.28k|        store_16(first + 2 - n);
27808|  3.28k|        first[18 - n] = s16;
27809|  3.28k|        return first + 2 - n + len;
27810|  3.28k|    }
27811|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27812|  9.29k|    store_16(first + 1);
27813|  9.29k|    first[17] = s16;
27814|  9.29k|    first[0] = first_digit;
27815|  9.29k|    first[1] = '.';
27816|  9.29k|    char* const end = first + (len == 1 ? 1 : len + 1);
  ------------------
  |  Branch (27816:32): [True: 0, False: 9.29k]
  ------------------
27817|  9.29k|    const int e = n - 1;
27818|  9.29k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27818:21): [True: 5.49k, False: 3.80k]
  ------------------
27819|  9.29k|    const bool three = ea >= 100;
27820|  9.29k|    end[0] = 'e';
27821|  9.29k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27821:14): [True: 5.49k, False: 3.80k]
  ------------------
27822|  9.29k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27822:39): [True: 2.28k, False: 7.00k]
  ------------------
27823|  9.29k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27823:39): [True: 2.28k, False: 7.00k]
  ------------------
27824|  9.29k|    end[4] = static_cast<char>('0' + (ea % 10));
27825|  9.29k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27825:19): [True: 2.28k, False: 7.00k]
  ------------------
27826|  12.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl13write_decimalEPcmi:
27601|  3.64k|{
27602|  3.64k|    JSON_ASSERT(digits != 0 && digits < 100000000000000000u);
  ------------------
  |  | 2591|  3.64k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27602:5): [True: 3.64k, False: 0]
  |  Branch (27602:5): [True: 3.64k, False: 0]
  |  Branch (27602:5): [True: 3.64k, False: 0]
  ------------------
27603|  3.64k|    const std::uint64_t upper = digits / 100000000u;
27604|  3.64k|    const std::uint64_t b0 = upper / 100000000u; // (one digit: it is its own byte)
27605|  3.64k|    const std::uint64_t b1 = eight_digit_bytes(upper % 100000000u);
27606|  3.64k|    const std::uint64_t b2 = eight_digit_bytes(digits % 100000000u);
27607|       |    // leading and trailing zero digits: zero bytes, counted without division
27608|  3.64k|    int leading = 16;
27609|  3.64k|    int zeros = 16;
27610|  3.64k|    if (b0 != 0)
  ------------------
  |  Branch (27610:9): [True: 0, False: 3.64k]
  ------------------
27611|      0|    {
27612|      0|        leading = count_leading_zeros(b0) / 8;
27613|      0|    }
27614|  3.64k|    else if (b1 != 0)
  ------------------
  |  Branch (27614:14): [True: 1.07k, False: 2.56k]
  ------------------
27615|  1.07k|    {
27616|  1.07k|        leading = 8 + (count_leading_zeros(b1) / 8);
27617|  1.07k|    }
27618|  2.56k|    else
27619|  2.56k|    {
27620|  2.56k|        leading += count_leading_zeros(b2) / 8;
27621|  2.56k|    }
27622|  3.64k|    if (b2 != 0)
  ------------------
  |  Branch (27622:9): [True: 3.64k, False: 0]
  ------------------
27623|  3.64k|    {
27624|  3.64k|        zeros = count_trailing_zeros(b2) / 8;
27625|  3.64k|    }
27626|      0|    else if (b1 != 0)
  ------------------
  |  Branch (27626:14): [True: 0, False: 0]
  ------------------
27627|      0|    {
27628|      0|        zeros = 8 + (count_trailing_zeros(b1) / 8);
27629|      0|    }
27630|       |    // (else: 16, b0 is the one digit that is not 0)
27631|       |    // the digits as text at text + leading, then '0's, so that fixed-size
27632|       |    // moves need not check how many digits there are
27633|  3.64k|    std::array<char, 64> text; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27634|  3.64k|    store_msb_first(text.data(), b0 + 0x3030303030303030u);
27635|  3.64k|    store_msb_first(text.data() + 8, b1 + 0x3030303030303030u);
27636|  3.64k|    store_msb_first(text.data() + 16, b2 + 0x3030303030303030u);
27637|  3.64k|    std::memset(text.data() + 24, '0', 40);
27638|  3.64k|    const int k = 24 - leading - zeros; // significant digits
27639|  3.64k|    const int n = k + exp + zeros;      // position of the decimal point after the first digit
27640|  3.64k|    const char* const s0 = text.data() + leading;
27641|       |
27642|  3.64k|    if (-4 < n && n <= 15)
  ------------------
  |  Branch (27642:9): [True: 0, False: 3.64k]
  |  Branch (27642:19): [True: 0, False: 0]
  ------------------
27643|      0|    {
27644|       |        // "0.[000]digits" (n <= 0) is the digits after 1 - n leading '0's
27645|       |        // with the point after the first; "digits[000].0" (n >= k) and
27646|       |        // "dig.its" put the point after n characters
27647|      0|        const int pad = n <= 0 ? 1 - n : 0;
  ------------------
  |  Branch (27647:25): [True: 0, False: 0]
  ------------------
27648|      0|        const char* const s = s0 - pad;
27649|      0|        const int len = k + pad;
27650|      0|        const int point = n + pad;
27651|      0|        std::memcpy(first, s, 16);
27652|      0|        std::memcpy(first + point + 1, s + point, 24);
27653|      0|        first[point] = '.';
27654|      0|        return first + (point >= len ? point + 2 : len + 1);
  ------------------
  |  Branch (27654:25): [True: 0, False: 0]
  ------------------
27655|      0|    }
27656|       |
27657|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27658|  3.64k|    std::memcpy(first, s0, 16);
27659|  3.64k|    std::memcpy(first + 2, s0 + 1, 16);
27660|  3.64k|    first[1] = '.';
27661|  3.64k|    char* const end = first + (k == 1 ? 1 : k + 1);
  ------------------
  |  Branch (27661:32): [True: 1.17k, False: 2.47k]
  ------------------
27662|  3.64k|    const int e = n - 1;
27663|  3.64k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27663:21): [True: 3.64k, False: 0]
  ------------------
27664|  3.64k|    const bool three = ea >= 100;
27665|  3.64k|    end[0] = 'e';
27666|  3.64k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27666:14): [True: 3.64k, False: 0]
  ------------------
27667|  3.64k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27667:39): [True: 3.64k, False: 0]
  ------------------
27668|  3.64k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27668:39): [True: 3.64k, False: 0]
  ------------------
27669|  3.64k|    end[4] = static_cast<char>('0' + (ea % 10));
27670|  3.64k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27670:19): [True: 3.64k, False: 0]
  ------------------
27671|  3.64k|}
_ZZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalEENKUlS3_E_clES3_:
27720|  12.5k|    {
27721|  12.5k|        std::memcpy(p, &s, 16);
27722|  12.5k|    };
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE5flushEv:
29158|  25.0k|    {
29159|  25.0k|        o->write_characters(write_buffer.data(), write_buffer_pos);
29160|  25.0k|        write_buffer_pos = 0;
29161|  25.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail35binary_writer_default_error_handlerEv:
 6658|  7.20k|{
 6659|       |#if JSON_STRICT_BINARY_UTF8
 6660|       |    return error_handler_t::strict;
 6661|       |#else
 6662|  7.20k|    return error_handler_t::keep;
 6663|  7.20k|#endif
 6664|  7.20k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvED2Ev:
32820|  2.84M|    {
32821|  2.84M|        assert_invariant(false);
32822|  2.84M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16assert_invariantEb:
31150|  7.41M|    {
31151|  7.41M|        JSON_ASSERT(m_data.m_type != value_t::object || m_data.m_value.object != nullptr);
  ------------------
  |  | 2591|  7.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31151:9): [True: 6.98M, False: 428k]
  |  Branch (31151:9): [True: 428k, False: 0]
  |  Branch (31151:9): [True: 7.41M, False: 0]
  ------------------
31152|  7.41M|        JSON_ASSERT(m_data.m_type != value_t::array || m_data.m_value.array != nullptr);
  ------------------
  |  | 2591|  7.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31152:9): [True: 6.63M, False: 783k]
  |  Branch (31152:9): [True: 783k, False: 0]
  |  Branch (31152:9): [True: 7.41M, False: 0]
  ------------------
31153|  7.41M|        JSON_ASSERT(m_data.m_type != value_t::string || m_data.m_value.string != nullptr);
  ------------------
  |  | 2591|  7.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31153:9): [True: 6.97M, False: 442k]
  |  Branch (31153:9): [True: 442k, False: 0]
  |  Branch (31153:9): [True: 7.41M, False: 0]
  ------------------
31154|  7.41M|        JSON_ASSERT(m_data.m_type != value_t::binary || m_data.m_value.binary != nullptr);
  ------------------
  |  | 2591|  7.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31154:9): [True: 6.47M, False: 938k]
  |  Branch (31154:9): [True: 938k, False: 0]
  |  Branch (31154:9): [True: 7.41M, False: 0]
  ------------------
31155|       |
31156|       |#if JSON_DIAGNOSTICS
31157|       |        JSON_TRY
31158|       |        {
31159|       |            JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json & j)
31160|       |            {
31161|       |                return j.m_parent == this;
31162|       |            }));
31163|       |        }
31164|       |        JSON_CATCH(...) {} // LCOV_EXCL_LINE
31165|       |#endif
31166|  7.41M|        static_cast<void>(check_parents);
31167|  7.41M|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataD2Ev:
36341|  2.84M|        {
36342|  2.84M|            m_value.destroy(m_type);
36343|  2.84M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value7destroyENS0_6detail7value_tE:
31094|  3.44M|        {
31095|  3.44M|            if (JSON_HEDLEY_UNLIKELY(detail::owns_memory(t)))
  ------------------
  |  | 1667|  3.44M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 299k, False: 3.14M]
  |  |  ------------------
  ------------------
31096|   299k|            {
31097|   299k|                destroy_owned(t);
31098|   299k|            }
31099|  3.44M|        }
_ZN8nlohmann16json_abi_v3_12_06detail11owns_memoryENS1_7value_tE:
 3350|  3.44M|{
 3351|  3.44M|    switch (t)
 3352|  3.44M|    {
 3353|  10.0k|        case value_t::object:
  ------------------
  |  Branch (3353:9): [True: 10.0k, False: 3.43M]
  ------------------
 3354|  39.0k|        case value_t::array:
  ------------------
  |  Branch (3354:9): [True: 28.9k, False: 3.41M]
  ------------------
 3355|   124k|        case value_t::string:
  ------------------
  |  Branch (3355:9): [True: 85.8k, False: 3.36M]
  ------------------
 3356|   299k|        case value_t::binary:
  ------------------
  |  Branch (3356:9): [True: 174k, False: 3.27M]
  ------------------
 3357|   299k|            return true;
 3358|       |
 3359|  2.80M|        case value_t::null:
  ------------------
  |  Branch (3359:9): [True: 2.80M, False: 641k]
  ------------------
 3360|  2.83M|        case value_t::boolean:
  ------------------
  |  Branch (3360:9): [True: 24.5k, False: 3.42M]
  ------------------
 3361|  2.94M|        case value_t::number_integer:
  ------------------
  |  Branch (3361:9): [True: 108k, False: 3.33M]
  ------------------
 3362|  3.09M|        case value_t::number_unsigned:
  ------------------
  |  Branch (3362:9): [True: 152k, False: 3.29M]
  ------------------
 3363|  3.14M|        case value_t::number_float:
  ------------------
  |  Branch (3363:9): [True: 53.0k, False: 3.39M]
  ------------------
 3364|  3.14M|        case value_t::discarded:
  ------------------
  |  Branch (3364:9): [True: 3.12k, False: 3.44M]
  ------------------
 3365|  3.14M|        default:
  ------------------
  |  Branch (3365:9): [True: 0, False: 3.44M]
  ------------------
 3366|  3.14M|            return false;
 3367|  3.44M|    }
 3368|  3.44M|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13destroy_ownedENS0_6detail7value_tE:
31102|   299k|        {
31103|   299k|            switch (t)
31104|   299k|            {
31105|  85.8k|                case value_t::string:
  ------------------
  |  Branch (31105:17): [True: 85.8k, False: 214k]
  ------------------
31106|  85.8k|                    destroy_string();
31107|  85.8k|                    break;
31108|       |
31109|   174k|                case value_t::binary:
  ------------------
  |  Branch (31109:17): [True: 174k, False: 124k]
  ------------------
31110|   174k|                    destroy_binary();
31111|   174k|                    break;
31112|       |
31113|  10.0k|                case value_t::object:
  ------------------
  |  Branch (31113:17): [True: 10.0k, False: 289k]
  ------------------
31114|  39.0k|                case value_t::array:
  ------------------
  |  Branch (31114:17): [True: 28.9k, False: 270k]
  ------------------
31115|  39.0k|                    destroy_container(t);
31116|  39.0k|                    break;
31117|       |
31118|      0|                case value_t::null:
  ------------------
  |  Branch (31118:17): [True: 0, False: 299k]
  ------------------
31119|      0|                case value_t::boolean:
  ------------------
  |  Branch (31119:17): [True: 0, False: 299k]
  ------------------
31120|      0|                case value_t::number_integer:
  ------------------
  |  Branch (31120:17): [True: 0, False: 299k]
  ------------------
31121|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (31121:17): [True: 0, False: 299k]
  ------------------
31122|      0|                case value_t::number_float:
  ------------------
  |  Branch (31122:17): [True: 0, False: 299k]
  ------------------
31123|      0|                case value_t::discarded:
  ------------------
  |  Branch (31123:17): [True: 0, False: 299k]
  ------------------
31124|      0|                default:
  ------------------
  |  Branch (31124:17): [True: 0, False: 299k]
  ------------------
31125|      0|                    break;
31126|   299k|            }
31127|   299k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14destroy_stringEv:
30920|  85.8k|        {
30921|  85.8k|            if (string == nullptr)
  ------------------
  |  Branch (30921:17): [True: 0, False: 85.8k]
  ------------------
30922|      0|            {
30923|       |                // not initialized (e.g., due to exception in the ctor)
30924|      0|                return;
30925|      0|            }
30926|  85.8k|            AllocatorType<string_t> alloc;
30927|  85.8k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
30928|  85.8k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
30929|  85.8k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14destroy_binaryEv:
30932|   174k|        {
30933|   174k|            if (binary == nullptr)
  ------------------
  |  Branch (30933:17): [True: 0, False: 174k]
  ------------------
30934|      0|            {
30935|       |                // not initialized (e.g., due to exception in the ctor)
30936|      0|                return;
30937|      0|            }
30938|   174k|            AllocatorType<binary_t> alloc;
30939|   174k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, binary);
30940|   174k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, binary, 1);
30941|   174k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value17destroy_containerENS0_6detail7value_tE:
30945|  39.0k|        {
30946|  39.0k|            if (
30947|  39.0k|                (t == value_t::object && object == nullptr) ||
  ------------------
  |  Branch (30947:18): [True: 10.0k, False: 28.9k]
  |  Branch (30947:42): [True: 0, False: 10.0k]
  ------------------
30948|  39.0k|                (t == value_t::array && array == nullptr)
  ------------------
  |  Branch (30948:18): [True: 28.9k, False: 10.0k]
  |  Branch (30948:41): [True: 0, False: 28.9k]
  ------------------
30949|  39.0k|            )
30950|      0|            {
30951|       |                // not initialized (e.g., due to exception in the ctor)
30952|      0|                return;
30953|      0|            }
30954|       |
30955|       |            // This json_value is not itself a basic_json, so the top-level
30956|       |            // container is first moved into a local stand-in ("cur"); a
30957|       |            // default-constructed basic_json has a null pointer in its
30958|       |            // m_value (see data::m_value's initializer), so swapping it
30959|       |            // with *this leaves this union's own pointer null, and it is
30960|       |            // never looked at or freed a second time.
30961|  39.0k|            basic_json cur;
30962|  39.0k|            cur.m_data.m_type = t;
30963|  39.0k|            using std::swap;
30964|  39.0k|            swap(cur.m_data.m_value, *this);
30965|       |
30966|  39.0k|            destroy_bounded(cur, 0);
30967|  39.0k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EDn:
32392|   790k|    {
32393|   790k|        assert_invariant();
32394|   790k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2Ev:
36334|  1.39M|        data() noexcept = default;
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_boundedERSE_m:
30974|   521k|        {
30975|   521k|            if (JSON_HEDLEY_UNLIKELY(depth >= detail::recursion_depth_limit()))
  ------------------
  |  | 1667|   521k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12.3k, False: 509k]
  |  |  ------------------
  ------------------
30976|  12.3k|            {
30977|  12.3k|                destroy_walk(v);
30978|  12.3k|                return;
30979|  12.3k|            }
30980|       |
30981|   509k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30981:17): [True: 417k, False: 91.2k]
  ------------------
30982|   417k|            {
30983|   417k|                for (auto& child : *v.m_data.m_value.array)
  ------------------
  |  Branch (30983:34): [True: 932k, False: 417k]
  ------------------
30984|   932k|                {
30985|   932k|                    if (child.m_data.m_type == value_t::array || child.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30985:25): [True: 392k, False: 540k]
  |  Branch (30985:66): [True: 32.3k, False: 508k]
  ------------------
30986|   424k|                    {
30987|   424k|                        destroy_bounded(child, depth + 1);
30988|   424k|                    }
30989|   932k|                }
30990|   417k|            }
30991|  91.2k|            else
30992|  91.2k|            {
30993|  91.2k|                for (auto& child : *v.m_data.m_value.object)
  ------------------
  |  Branch (30993:34): [True: 111k, False: 91.2k]
  ------------------
30994|   111k|                {
30995|   111k|                    if (child.second.m_data.m_type == value_t::array || child.second.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30995:25): [True: 2.04k, False: 108k]
  |  Branch (30995:73): [True: 56.0k, False: 52.9k]
  ------------------
30996|  58.1k|                    {
30997|  58.1k|                        destroy_bounded(child.second, depth + 1);
30998|  58.1k|                    }
30999|   111k|                }
31000|  91.2k|            }
31001|       |
31002|       |            // only leaves and already destroyed (null) children remain
31003|   509k|            free_container(v);
31004|   509k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value12destroy_walkERSE_:
31031|  12.3k|        {
31032|  12.3k|            basic_json cur;
31033|  12.3k|            take(cur, top);
31034|       |
31035|  12.3k|            basic_json prev; // value_t::null: no parent
31036|       |
31037|       |            // true right after cur was entered: its children have not been
31038|       |            // looked at yet. If none of them has children of its own, cur is
31039|       |            // freed in one go instead of child by child; this is tried once
31040|       |            // per container, so the walk stays linear.
31041|  12.3k|            bool fresh = true;
31042|       |
31043|   538k|            while (true)
  ------------------
  |  Branch (31043:20): [True: 538k, Folded]
  ------------------
31044|   538k|            {
31045|   538k|                const bool fresh_now = fresh;
31046|   538k|                fresh = false;
31047|   538k|                if (has_no_children(cur) || (fresh_now && all_children_leaves(cur)))
  ------------------
  |  Branch (31047:21): [True: 253k, False: 285k]
  |  Branch (31047:46): [True: 260k, False: 25.1k]
  |  Branch (31047:59): [True: 10.7k, False: 249k]
  ------------------
31048|   264k|                {
31049|   264k|                    if (prev.m_data.m_type == value_t::null)
  ------------------
  |  Branch (31049:25): [True: 12.3k, False: 251k]
  ------------------
31050|  12.3k|                    {
31051|  12.3k|                        free_container(cur);
31052|  12.3k|                        return; // back at the top with nothing left to do
31053|  12.3k|                    }
31054|       |
31055|       |                    // ascend: detach the grandparent link from prev's
31056|       |                    // walk_child() slot, drop that (now null) slot, free cur
31057|       |                    // (it is empty), then move up one level
31058|   251k|                    basic_json gp;
31059|   251k|                    take(gp, walk_child(prev));
31060|   251k|                    pop_walk_child(prev);
31061|       |
31062|   251k|                    free_container(cur);
31063|       |
31064|   251k|                    take(cur, prev);
31065|   251k|                    take(prev, gp);
31066|   251k|                    continue;
31067|   264k|                }
31068|       |
31069|   274k|                basic_json& cur_child_ref = walk_child(cur);
31070|       |
31071|   274k|                if (has_no_children(cur_child_ref))
  ------------------
  |  Branch (31071:21): [True: 23.1k, False: 251k]
  ------------------
31072|  23.1k|                {
31073|       |                    // scalar, or already-empty array/object
31074|  23.1k|                    pop_walk_child(cur);
31075|  23.1k|                    continue;
31076|  23.1k|                }
31077|       |
31078|       |                // descend into the non-empty child, reversing the
31079|       |                // link: its slot takes over prev, and the child becomes
31080|       |                // the new cur
31081|   251k|                basic_json tmp;
31082|   251k|                take(tmp, cur_child_ref);
31083|   251k|                take(cur_child_ref, prev);
31084|   251k|                take(prev, cur);
31085|   251k|                take(cur, tmp);
31086|   251k|                fresh = true;
31087|   251k|            }
31088|  12.3k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value4takeERSE_SG_:
30789|  1.77M|        {
30790|  1.77M|            dst.m_data.m_type = src.m_data.m_type;
30791|  1.77M|            dst.m_data.m_value = src.m_data.m_value;
30792|  1.77M|            src.m_data.m_type = value_t::null;
30793|  1.77M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15has_no_childrenERKSE_:
30797|  2.92M|        {
30798|  2.92M|            switch (v.m_data.m_type)
30799|  2.92M|            {
30800|  1.52M|                case value_t::array:
  ------------------
  |  Branch (30800:17): [True: 1.52M, False: 1.40M]
  ------------------
30801|  1.52M|                    return v.m_data.m_value.array->empty();
30802|   299k|                case value_t::object:
  ------------------
  |  Branch (30802:17): [True: 299k, False: 2.62M]
  ------------------
30803|   299k|                    return v.m_data.m_value.object->empty();
30804|   501k|                case value_t::null:
  ------------------
  |  Branch (30804:17): [True: 501k, False: 2.42M]
  ------------------
30805|   579k|                case value_t::string:
  ------------------
  |  Branch (30805:17): [True: 78.1k, False: 2.84M]
  ------------------
30806|   604k|                case value_t::boolean:
  ------------------
  |  Branch (30806:17): [True: 25.2k, False: 2.90M]
  ------------------
30807|   714k|                case value_t::number_integer:
  ------------------
  |  Branch (30807:17): [True: 110k, False: 2.81M]
  ------------------
30808|   868k|                case value_t::number_unsigned:
  ------------------
  |  Branch (30808:17): [True: 153k, False: 2.77M]
  ------------------
30809|   918k|                case value_t::number_float:
  ------------------
  |  Branch (30809:17): [True: 49.7k, False: 2.87M]
  ------------------
30810|  1.10M|                case value_t::binary:
  ------------------
  |  Branch (30810:17): [True: 183k, False: 2.74M]
  ------------------
30811|  1.10M|                case value_t::discarded:
  ------------------
  |  Branch (30811:17): [True: 0, False: 2.92M]
  ------------------
30812|  1.10M|                default:
  ------------------
  |  Branch (30812:17): [True: 0, False: 2.92M]
  ------------------
30813|  1.10M|                    return true;
30814|  2.92M|            }
30815|  2.92M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_:
30822|   741k|        {
30823|       |            // array_t only needs forward iterators (see custom_array_type)
30824|   741k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30824:17): [True: 620k, False: 120k]
  ------------------
30825|   620k|            {
30826|   620k|                const auto& a = *v.m_data.m_value.array;
30827|   620k|                return std::all_of(a.begin(), a.end(), [](const basic_json & el)
30828|   620k|                {
30829|   620k|                    return has_no_children(el);
30830|   620k|                });
30831|   620k|            }
30832|   120k|            const auto& o = *v.m_data.m_value.object;
30833|   120k|            return std::all_of(o.begin(), o.end(), [](const typename object_t::value_type & el)
30834|   120k|            {
30835|   120k|                return has_no_children(el.second);
30836|   120k|            });
30837|   741k|        }
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlSH_E_clESH_:
30828|  1.17M|                {
30829|  1.17M|                    return has_no_children(el);
30830|  1.17M|                });
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlRKNS2_4pairIKSA_SE_EEE_clESM_:
30834|   169k|            {
30835|   169k|                return has_no_children(el.second);
30836|   169k|            });
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10walk_childERSE_:
30868|   526k|        {
30869|   526k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30869:17): [True: 448k, False: 78.0k]
  ------------------
30870|   448k|            {
30871|   448k|                return v.m_data.m_value.array->back();
30872|   448k|            }
30873|  78.0k|            JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  78.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30873:13): [True: 78.0k, False: 0]
  ------------------
30874|  78.0k|            return walk_child_it(*v.m_data.m_value.object)->second;
30875|  78.0k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13walk_child_itINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEEENT_8iteratorERSO_:
30860|   120k|        {
30861|   120k|            JSON_ASSERT(!o.empty());
  ------------------
  |  | 2591|   120k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30861:13): [True: 120k, False: 0]
  ------------------
30862|   120k|            return walk_child_it(o, typename std::iterator_traits<typename ObjectType_::iterator>::iterator_category());
30863|   120k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13walk_child_itINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEEENT_8iteratorERSO_NS2_26bidirectional_iterator_tagE:
30848|   120k|        {
30849|   120k|            return std::prev(o.end());
30850|   120k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14pop_walk_childERSE_:
30882|   274k|        {
30883|   274k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30883:17): [True: 232k, False: 42.2k]
  ------------------
30884|   232k|            {
30885|   232k|                v.m_data.m_value.array->pop_back();
30886|   232k|            }
30887|  42.2k|            else
30888|  42.2k|            {
30889|  42.2k|                JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  42.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30889:17): [True: 42.2k, False: 0]
  ------------------
30890|  42.2k|                v.m_data.m_value.object->erase(walk_child_it(*v.m_data.m_value.object));
30891|  42.2k|            }
30892|   274k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14free_containerERSE_:
30900|   773k|        {
30901|   773k|            JSON_ASSERT(has_no_children(v) || all_children_leaves(v));
  ------------------
  |  | 2591|   773k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30901:13): [True: 292k, False: 480k]
  |  Branch (30901:13): [True: 480k, False: 0]
  |  Branch (30901:13): [True: 773k, False: 0]
  ------------------
30902|   773k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30902:17): [True: 637k, False: 135k]
  ------------------
30903|   637k|            {
30904|   637k|                AllocatorType<array_t> alloc;
30905|   637k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.array);
30906|   637k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.array, 1);
30907|   637k|            }
30908|   135k|            else
30909|   135k|            {
30910|   135k|                JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|   135k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30910:17): [True: 135k, False: 0]
  ------------------
30911|   135k|                AllocatorType<object_t> alloc;
30912|   135k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.object);
30913|   135k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.object, 1);
30914|   135k|            }
30915|   773k|            v.m_data.m_type = value_t::null; // avoid a double free if v is later destructed
30916|   773k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIRKSD_EESE_OT_bbNS0_6detail18cbor_tag_handler_tENSK_15error_handler_tE:
36583|  17.0k|    {
36584|  17.0k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
36585|  17.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterIPKhSJ_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  23.7k|    {
36386|  23.7k|        basic_json result;
36387|  23.7k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  23.7k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  23.7k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 3.12k, False: 20.6k]
  ------------------
36390|  3.12k|        {
36391|  3.12k|            result = value_t::discarded;
36392|  3.12k|        }
36393|  23.7k|        return result;
36394|  23.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEEC2ERSG_bPNS1_5lexerISG_SK_EE:
13873|  23.7k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  23.7k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEEC2EOSK_NS1_14input_format_tENS1_15error_handler_tE:
14944|  23.7k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  23.7k|    {
14946|  23.7k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  23.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE3eofEv:
 4299|   580k|    {
 4300|   580k|        return static_cast<int_type>(std::char_traits<char>::eof());
 4301|   580k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17little_endiannessEi:
14882|  51.1k|{
14883|  51.1k|    return *reinterpret_cast<char*>(&num) == 1;
14884|  51.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9sax_parseEPSM_bNS1_18cbor_tag_handler_tE:
14969|  23.7k|    {
14970|  23.7k|        sax = sax_;
14971|  23.7k|        container_stack.clear();
14972|  23.7k|        bon8_pushback_size = 0;
14973|  23.7k|        bool result = false;
14974|       |
14975|  23.7k|        switch (input_format)
14976|  23.7k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 23.7k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|  23.7k|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 23.7k, False: 0]
  ------------------
14982|  23.7k|                result = parse_cbor_internal(tag_handler);
14983|  23.7k|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 23.7k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 23.7k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 23.7k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 23.7k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 23.7k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 23.7k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  23.7k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  17.7k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 14.6k, False: 3.02k]
  |  Branch (15004:23): [True: 14.6k, False: 0]
  ------------------
15005|  14.6k|        {
15006|  14.6k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 14.6k]
  |  Branch (15006:59): [True: 0, False: 14.6k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  14.6k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 14.6k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  14.6k|            else
15016|  14.6k|            {
15017|  14.6k|                get();
15018|  14.6k|            }
15019|       |
15020|  14.6k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  14.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 273, False: 14.4k]
  |  |  ------------------
  ------------------
15021|    273|            {
15022|    273|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|    273|            }
15024|  14.6k|        }
15025|       |
15026|  17.4k|        return result;
15027|  17.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E15remaining_countEv:
 8663|   124k|    {
 8664|       |#if JSON_HAS_RANGES && defined(__cpp_lib_concepts) && defined(JSON_HAS_CPP_20)
 8665|       |        // std::ranges::distance also supports sized sentinels of a different
 8666|       |        // type (e.g. std::counted_iterator + std::default_sentinel_t)
 8667|       |        return static_cast<std::size_t>(std::ranges::distance(current, end));
 8668|       |#else
 8669|   124k|        return static_cast<std::size_t>(std::distance(current, end));
 8670|   124k|#endif
 8671|   124k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10report_eofEPKc:
19058|  7.50k|    {
19059|  7.50k|        return sax->parse_error(chars_read, "<end of file>",
19060|  7.50k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  7.50k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  8.70k|    {
14005|  8.70k|        errored = true;
14006|  8.70k|        static_cast<void>(ex);
14007|  8.70k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 5.80k, False: 2.90k]
  ------------------
14008|  5.80k|        {
14009|  5.80k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  5.80k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  5.80k|        }
14011|  2.90k|        return false;
14012|  8.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idEmRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5585|  17.4k|    {
 5586|  17.4k|        return create(static_cast<int>(id_), byte_, what_arg, context);
 5587|  17.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_imRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5570|  17.4k|    {
 5571|  17.4k|        const std::string w = concat(exception::name("parse_error", id_), "parse error",
 5572|  17.4k|                                     (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""),
  ------------------
  |  Branch (5572:39): [True: 17.4k, False: 0]
  ------------------
 5573|  17.4k|                                     ": ", exception::diagnostics(context), what_arg);
 5574|  17.4k|        return {id_, byte_, w.c_str()};
 5575|  17.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_RA12_KcS9_RA3_SA_S9_RKS9_EEET_DpOT0_:
 5318|  17.4k|{
 5319|  17.4k|    OutStringType str;
 5320|  17.4k|    str.reserve(concat_length(args...));
 5321|  17.4k|    concat_into(str, std::forward<Args>(args)...);
 5322|  17.4k|    return str;
 5323|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA12_cS9_A3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  17.4k|{
 5229|  17.4k|    return str.size() + concat_length(rest...);
 5230|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_S9_EEEmPKcDpRKT_:
 5222|  17.4k|{
 5223|  17.4k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  17.4k|{
 5229|  17.4k|    return str.size() + concat_length(rest...);
 5230|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_EEEmPKcDpRKT_:
 5222|  17.4k|{
 5223|  17.4k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA12_KcS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA12_KcJS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA10_KcS9_EEET_DpOT0_:
 5318|  17.4k|{
 5319|  17.4k|    OutStringType str;
 5320|  17.4k|    str.reserve(concat_length(args...));
 5321|  17.4k|    concat_into(str, std::forward<Args>(args)...);
 5322|  17.4k|    return str;
 5323|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA10_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11parse_errorC2EimPKc:
 5602|  17.4k|        : exception(id_, what_arg), byte(byte_) {}
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17exception_messageERKSC_SP_:
19163|  8.70k|    {
19164|  8.70k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  8.70k|        switch (input_format)
19167|  8.70k|        {
19168|  8.70k|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 8.70k, False: 0]
  ------------------
19169|  8.70k|                error_msg += "CBOR";
19170|  8.70k|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 8.70k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 8.70k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 8.70k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 8.70k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 8.70k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 8.70k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 8.70k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  8.70k|        }
19196|       |
19197|  8.70k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  8.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRS9_cRKS9_RA3_KcSC_EEET_DpOT0_:
 5318|  17.4k|{
 5319|  17.4k|    OutStringType str;
 5320|  17.4k|    str.reserve(concat_length(args...));
 5321|  17.4k|    concat_into(str, std::forward<Args>(args)...);
 5322|  17.4k|    return str;
 5323|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cS9_EEEmRKT_DpRKT0_:
 5228|  17.4k|{
 5229|  17.4k|    return str.size() + concat_length(rest...);
 5230|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_EEEmcDpRKT_:
 5216|  17.4k|{
 5217|  17.4k|    return 1 + concat_length(rest...);
 5218|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_EEEmRKT_DpRKT0_:
 5228|  17.4k|{
 5229|  17.4k|    return str.size() + concat_length(rest...);
 5230|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERS9_JcRKS9_RA3_KcSC_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSH_OSI_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJRKS9_RA3_KcSB_ETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISG_SH_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5290|  17.4k|{
 5291|  17.4k|    out += std::forward<Arg>(arg);
 5292|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRA3_KcSB_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.4k|{
 5282|  17.4k|    out.append(std::forward<Arg>(arg));
 5283|  17.4k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15enter_containerEbmm:
15082|   426k|    {
15083|   426k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   853k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 218, False: 426k]
  |  |  |  Branch (1667:94): [True: 72.5k, False: 354k]
  |  |  ------------------
  ------------------
15084|    218|        {
15085|    218|            return false;
15086|    218|        }
15087|       |
15088|   426k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   426k|        return true;
15090|   426k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12start_objectEm:
13930|  72.5k|    {
13931|  72.5k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  72.5k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  72.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   426k|    {
14031|   426k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 15.1k, False: 411k]
  ------------------
14032|  15.1k|        {
14033|  15.1k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  15.1k|            return &root;
14040|  15.1k|        }
14041|       |
14042|   411k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|   411k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 358k, False: 52.8k]
  |  Branch (14042:9): [True: 52.8k, False: 0]
  |  Branch (14042:9): [True: 411k, False: 0]
  ------------------
14043|       |
14044|   411k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 358k, False: 52.8k]
  ------------------
14045|   358k|        {
14046|   358k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|   358k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|   358k|        }
14054|       |
14055|  52.8k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  52.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 52.8k, False: 0]
  ------------------
14056|  52.8k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  52.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 52.8k, False: 0]
  ------------------
14057|  52.8k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  52.8k|        return object_element;
14064|  52.8k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8is_arrayEv:
32946|  3.46M|    {
32947|  3.46M|        return m_data.m_type == value_t::array;
32948|  3.46M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_objectEv:
32938|   715k|    {
32939|   715k|        return m_data.m_type == value_t::object;
32940|   715k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EOSE_:
32765|   682k|        : json_base_class_t(std::move(static_cast<json_base_class_t&>(other))),
32766|   682k|          m_data(std::move(other.m_data))
32767|       |#if JSON_DIAGNOSTIC_POSITIONS
32768|       |        , start_position(other.start_position)
32769|       |        , end_position(other.end_position)
32770|       |#endif
32771|   682k|    {
32772|       |        // check that the passed value is valid
32773|   682k|        other.assert_invariant(false);
32774|       |
32775|       |        // invalidate payload
32776|   682k|        other.m_data.m_type = value_t::null;
32777|   682k|        other.m_data.m_value = {};
32778|       |
32779|       |#if JSON_DIAGNOSTIC_POSITIONS
32780|       |        other.start_position = std::string::npos;
32781|       |        other.end_position = std::string::npos;
32782|       |#endif
32783|       |
32784|   682k|        set_parents();
32785|   682k|        assert_invariant();
32786|   682k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11set_parentsEv:
31170|  2.70M|    {
31171|       |#if JSON_DIAGNOSTICS
31172|       |        switch (m_data.m_type)
31173|       |        {
31174|       |            case value_t::array:
31175|       |            {
31176|       |                for (auto& element : *m_data.m_value.array)
31177|       |                {
31178|       |                    element.m_parent = this;
31179|       |                }
31180|       |                break;
31181|       |            }
31182|       |
31183|       |            case value_t::object:
31184|       |            {
31185|       |                for (auto& element : *m_data.m_value.object)
31186|       |                {
31187|       |                    element.second.m_parent = this;
31188|       |                }
31189|       |                break;
31190|       |            }
31191|       |
31192|       |            case value_t::null:
31193|       |            case value_t::string:
31194|       |            case value_t::boolean:
31195|       |            case value_t::number_integer:
31196|       |            case value_t::number_unsigned:
31197|       |            case value_t::number_float:
31198|       |            case value_t::binary:
31199|       |            case value_t::discarded:
31200|       |            default:
31201|       |                break;
31202|       |        }
31203|       |#endif
31204|  2.70M|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterIPKhSK_EEEESH_EEbRT_mPKcPT0_:
13724|   426k|{
13725|   426k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   830k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 654, False: 426k]
  |  |  |  Branch (1667:94): [True: 403k, False: 23.7k]
  |  |  |  Branch (1667:94): [True: 654, False: 402k]
  |  |  ------------------
  ------------------
13726|    654|    {
13727|    654|        return container_too_large_error(sax, len, kind, ref);
13728|    654|    }
13729|   426k|    return true;
13730|   426k|}
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8max_sizeEv:
34667|   725k|    {
34668|   725k|        switch (m_data.m_type)
34669|   725k|        {
34670|   596k|            case value_t::array:
  ------------------
  |  Branch (34670:13): [True: 596k, False: 129k]
  ------------------
34671|   596k|            {
34672|       |                // delegate call to array_t::max_size()
34673|   596k|                return m_data.m_value.array->max_size();
34674|      0|            }
34675|       |
34676|   129k|            case value_t::object:
  ------------------
  |  Branch (34676:13): [True: 129k, False: 596k]
  ------------------
34677|   129k|            {
34678|       |                // delegate call to object_t::max_size()
34679|   129k|                return m_data.m_value.object->max_size();
34680|      0|            }
34681|       |
34682|      0|            case value_t::null:
  ------------------
  |  Branch (34682:13): [True: 0, False: 725k]
  ------------------
34683|      0|            case value_t::string:
  ------------------
  |  Branch (34683:13): [True: 0, False: 725k]
  ------------------
34684|      0|            case value_t::boolean:
  ------------------
  |  Branch (34684:13): [True: 0, False: 725k]
  ------------------
34685|      0|            case value_t::number_integer:
  ------------------
  |  Branch (34685:13): [True: 0, False: 725k]
  ------------------
34686|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (34686:13): [True: 0, False: 725k]
  ------------------
34687|      0|            case value_t::number_float:
  ------------------
  |  Branch (34687:13): [True: 0, False: 725k]
  ------------------
34688|      0|            case value_t::binary:
  ------------------
  |  Branch (34688:13): [True: 0, False: 725k]
  ------------------
34689|      0|            case value_t::discarded:
  ------------------
  |  Branch (34689:13): [True: 0, False: 725k]
  ------------------
34690|      0|            default:
  ------------------
  |  Branch (34690:13): [True: 0, False: 725k]
  ------------------
34691|      0|            {
34692|       |                // all other types have max_size() == size()
34693|      0|                return size();
34694|      0|            }
34695|   725k|        }
34696|   725k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4sizeEv:
34627|  4.21k|    {
34628|  4.21k|        switch (m_data.m_type)
34629|  4.21k|        {
34630|      0|            case value_t::null:
  ------------------
  |  Branch (34630:13): [True: 0, False: 4.21k]
  ------------------
34631|      0|            {
34632|       |                // null values are empty
34633|      0|                return 0;
34634|      0|            }
34635|       |
34636|  3.86k|            case value_t::array:
  ------------------
  |  Branch (34636:13): [True: 3.86k, False: 354]
  ------------------
34637|  3.86k|            {
34638|       |                // delegate call to array_t::size()
34639|  3.86k|                return m_data.m_value.array->size();
34640|      0|            }
34641|       |
34642|    354|            case value_t::object:
  ------------------
  |  Branch (34642:13): [True: 354, False: 3.86k]
  ------------------
34643|    354|            {
34644|       |                // delegate call to object_t::size()
34645|    354|                return m_data.m_value.object->size();
34646|      0|            }
34647|       |
34648|      0|            case value_t::string:
  ------------------
  |  Branch (34648:13): [True: 0, False: 4.21k]
  ------------------
34649|      0|            case value_t::boolean:
  ------------------
  |  Branch (34649:13): [True: 0, False: 4.21k]
  ------------------
34650|      0|            case value_t::number_integer:
  ------------------
  |  Branch (34650:13): [True: 0, False: 4.21k]
  ------------------
34651|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (34651:13): [True: 0, False: 4.21k]
  ------------------
34652|      0|            case value_t::number_float:
  ------------------
  |  Branch (34652:13): [True: 0, False: 4.21k]
  ------------------
34653|      0|            case value_t::binary:
  ------------------
  |  Branch (34653:13): [True: 0, False: 4.21k]
  ------------------
34654|      0|            case value_t::discarded:
  ------------------
  |  Branch (34654:13): [True: 0, False: 4.21k]
  ------------------
34655|      0|            default:
  ------------------
  |  Branch (34655:13): [True: 0, False: 4.21k]
  ------------------
34656|      0|            {
34657|       |                // all other types have size 1
34658|      0|                return 1;
34659|      0|            }
34660|  4.21k|        }
34661|  4.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterIPKhSK_EEEESH_EEbRT_mPKcPT0_:
13718|    654|{
13719|    654|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
13720|    654|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11parse_errorINS1_12out_of_rangeEEEbmRKSC_RKT_:
14004|    660|    {
14005|    660|        errored = true;
14006|    660|        static_cast<void>(ex);
14007|    660|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 440, False: 220]
  ------------------
14008|    440|        {
14009|    440|            JSON_THROW(ex);
  ------------------
  |  | 2556|    440|    #define JSON_THROW(exception) throw exception
  ------------------
14010|    440|        }
14011|    220|        return false;
14012|    660|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIPNS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEETnNS5_9enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idERKSD_SK_:
 5672|  1.30k|    {
 5673|  1.30k|        return create(static_cast<int>(id_), what_arg, context);
 5674|  1.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIPNS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEETnNS5_9enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_iRKSD_SK_:
 5665|  1.30k|    {
 5666|  1.30k|        const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg);
 5667|  1.30k|        return {id_, w.c_str()};
 5668|  1.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEEEESD_PKT_:
 5457|  1.30k|    {
 5458|       |#if JSON_DIAGNOSTICS
 5459|       |        std::vector<std::string> tokens;
 5460|       |        for (const auto* current = leaf_element; current != nullptr && current->m_parent != nullptr; current = current->m_parent)
 5461|       |        {
 5462|       |            switch (current->m_parent->type())
 5463|       |            {
 5464|       |                case value_t::array:
 5465|       |                {
 5466|       |                    for (std::size_t i = 0; i < current->m_parent->m_data.m_value.array->size(); ++i)
 5467|       |                    {
 5468|       |                        if (&current->m_parent->m_data.m_value.array->operator[](i) == current)
 5469|       |                        {
 5470|       |                            tokens.emplace_back(std::to_string(i));
 5471|       |                            break;
 5472|       |                        }
 5473|       |                    }
 5474|       |                    break;
 5475|       |                }
 5476|       |
 5477|       |                case value_t::object:
 5478|       |                {
 5479|       |                    for (const auto& element : *current->m_parent->m_data.m_value.object)
 5480|       |                    {
 5481|       |                        if (&element.second == current)
 5482|       |                        {
 5483|       |                            // data() is null-terminated, so a key containing
 5484|       |                            // a null byte is cut short here rather than
 5485|       |                            // truncating the whole message at what()
 5486|       |                            tokens.emplace_back(element.first.data());
 5487|       |                            break;
 5488|       |                        }
 5489|       |                    }
 5490|       |                    break;
 5491|       |                }
 5492|       |
 5493|       |                case value_t::null: // LCOV_EXCL_LINE
 5494|       |                case value_t::string: // LCOV_EXCL_LINE
 5495|       |                case value_t::boolean: // LCOV_EXCL_LINE
 5496|       |                case value_t::number_integer: // LCOV_EXCL_LINE
 5497|       |                case value_t::number_unsigned: // LCOV_EXCL_LINE
 5498|       |                case value_t::number_float: // LCOV_EXCL_LINE
 5499|       |                case value_t::binary: // LCOV_EXCL_LINE
 5500|       |                case value_t::discarded: // LCOV_EXCL_LINE
 5501|       |                default:   // LCOV_EXCL_LINE
 5502|       |                    break; // LCOV_EXCL_LINE
 5503|       |            }
 5504|       |        }
 5505|       |
 5506|       |        if (tokens.empty())
 5507|       |        {
 5508|       |            return "";
 5509|       |        }
 5510|       |
 5511|       |        auto str = std::accumulate(tokens.rbegin(), tokens.rend(), std::string{},
 5512|       |                                   [](const std::string & a, const std::string & b)
 5513|       |        {
 5514|       |            return concat(a, '/', detail::escape(b));
 5515|       |        });
 5516|       |
 5517|       |        return concat('(', str, ") ", get_byte_positions(leaf_element));
 5518|       |#else
 5519|  1.30k|        return get_byte_positions(leaf_element);
 5520|  1.30k|#endif
 5521|  1.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exception18get_byte_positionsINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEEEESD_PKT_:
 5539|  1.30k|    {
 5540|  1.30k|        static_cast<void>(leaf_element);
 5541|  1.30k|        return "";
 5542|  1.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_rangeC2EiPKc:
 5678|  1.32k|    out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA11_KcRPSA_RA8_SA_S9_EEET_DpOT0_:
 5318|  1.30k|{
 5319|  1.30k|    OutStringType str;
 5320|  1.30k|    str.reserve(concat_length(args...));
 5321|  1.30k|    concat_into(str, std::forward<Args>(args)...);
 5322|  1.30k|    return str;
 5323|  1.30k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA8_cNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEEEEmS4_DpRKT_:
 5222|  1.30k|{
 5223|  1.30k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  1.30k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA8_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  1.30k|{
 5223|  1.30k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  1.30k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA11_KcJRPSA_RA8_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  1.30k|{
 5282|  1.30k|    out.append(std::forward<Arg>(arg));
 5283|  1.30k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.30k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA8_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  1.30k|{
 5282|  1.30k|    out.append(std::forward<Arg>(arg));
 5283|  1.30k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.30k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA8_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  1.30k|{
 5282|  1.30k|    out.append(std::forward<Arg>(arg));
 5283|  1.30k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.30k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11start_arrayEm:
13966|   354k|    {
13967|   354k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|   354k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|   354k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 125, False: 354k]
  |  |  ------------------
  ------------------
13975|    125|        {
13976|    125|            return false;
13977|    125|        }
13978|       |
13979|   354k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 333k, False: 20.7k]
  ------------------
13980|   333k|        {
13981|   333k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|   333k|        }
13983|       |
13984|   354k|        return true;
13985|   354k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13reserve_arrayINSt3__16vectorINS0_10basic_jsonINS3_3mapES4_NS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS4_IhNSA_IhEEEEvEENSA_ISG_EEEEEEDTcmcldtfp_7reservefp0_Ecvv_EERT_mNS1_12priority_tagILj1EEE:
13695|   595k|{
13696|   595k|    constexpr std::size_t reserve_cap = 16384;
13697|   595k|    arr.reserve((std::min)(len, reserve_cap));
13698|   595k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15container_frameC2Embm:
15051|   426k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail12unknown_sizeEv:
13677|  1.47M|{
13678|  1.47M|    return (std::numeric_limits<std::size_t>::max)();
13679|  1.47M|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15leave_containerEv:
15114|   344k|    {
15115|   344k|        const bool is_object = container_stack.back().is_object;
15116|   344k|        container_stack.pop_back();
15117|   344k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 49.0k, False: 295k]
  ------------------
15118|   344k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE10end_objectEv:
13952|  49.0k|    {
13953|  49.0k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  49.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 49.0k, False: 0]
  ------------------
13954|  49.0k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  49.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 49.0k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  49.0k|        ref_stack.back()->set_parents();
13961|  49.0k|        ref_stack.pop_back();
13962|  49.0k|        return true;
13963|  49.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE9end_arrayEv:
13988|   295k|    {
13989|   295k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|   295k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 295k, False: 0]
  ------------------
13990|   295k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|   295k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 295k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|   295k|        ref_stack.back()->set_parents();
13997|   295k|        ref_stack.pop_back();
13998|   295k|        return true;
13999|   295k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12unexpect_eofEPKc:
19041|   295k|    {
19042|   295k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|   295k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6.75k, False: 288k]
  |  |  ------------------
  ------------------
19043|  6.75k|        {
19044|  6.75k|            return report_eof(context);
19045|  6.75k|        }
19046|   288k|        return true;
19047|   295k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17check_string_utf8ERSC_PKc:
18941|   140k|    {
18942|   140k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 140k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|   140k|        {
18944|   140k|            return true;
18945|   140k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE3keyERSC_:
13942|  94.9k|    {
13943|  94.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  94.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 94.9k, False: 0]
  ------------------
13944|  94.9k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  94.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 94.9k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  94.9k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  94.9k|        return true;
13949|  94.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIdEEbRT_PKc:
18667|  4.62k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.62k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.62k|        chars_read += new_chars_read;
18672|  4.62k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.62k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 39, False: 4.58k]
  |  |  ------------------
  ------------------
18673|     39|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     39|            ++chars_read;
18676|     39|            static_cast<void>(report_eof(context));
18677|     39|            return false;
18678|     39|        }
18679|  4.58k|        return true;
18680|  4.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIdEEmPT_m:
 8644|  4.62k|    {
 8645|  4.62k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  4.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIdEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  4.62k|    {
 8703|  4.62k|        const std::size_t wanted = count * sizeof(T);
 8704|  4.62k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  4.62k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  4.62k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  4.62k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.61k, False: 12]
  |  |  ------------------
  ------------------
 8707|  4.61k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  4.61k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  4.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 4.61k, False: 0]
  ------------------
 8712|  4.61k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  4.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 4.61k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  4.61k|            std::memcpy(dest, &*current, copied);
 8716|  4.61k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  4.61k|        }
 8718|  4.62k|        return copied;
 8719|  4.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIdEEvRT_:
18698|  4.58k|    {
18699|  4.58k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.58k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  22.9k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 18.3k, False: 4.58k]
  ------------------
18715|  18.3k|            {
18716|  18.3k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  18.3k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10emit_floatIdEEbT_:
18825|  4.58k|    {
18826|  4.58k|        const auto result = static_cast<number_float_t>(number);
18827|  4.58k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  9.15k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.58k]
  |  |  |  Branch (1667:94): [True: 4.56k, False: 24]
  |  |  |  Branch (1667:94): [True: 0, False: 4.56k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  4.58k|        return sax->number_float(result, "");
18832|  4.58k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE16get_token_stringEv:
19152|  2.39k|    {
19153|  2.39k|        return hex_byte(static_cast<std::uint8_t>(current));
19154|  2.39k|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idERKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5672|     12|    {
 5673|     12|        return create(static_cast<int>(id_), what_arg, context);
 5674|     12|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_iRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5665|     12|    {
 5666|     12|        const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg);
 5667|     12|        return {id_, w.c_str()};
 5668|     12|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12number_floatEdRKSC_:
13908|  29.6k|    {
13909|  29.6k|        handle_value(val);
13910|  29.6k|        return true;
13911|  29.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRdEEPSG_OT_:
14030|  29.6k|    {
14031|  29.6k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 1.81k, False: 27.8k]
  ------------------
14032|  1.81k|        {
14033|  1.81k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  1.81k|            return &root;
14040|  1.81k|        }
14041|       |
14042|  27.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  27.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 26.8k, False: 1.02k]
  |  Branch (14042:9): [True: 1.02k, False: 0]
  |  Branch (14042:9): [True: 27.8k, False: 0]
  ------------------
14043|       |
14044|  27.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 26.8k, False: 1.02k]
  ------------------
14045|  26.8k|        {
14046|  26.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  26.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  26.8k|        }
14054|       |
14055|  1.02k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.02k, False: 0]
  ------------------
14056|  1.02k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.02k, False: 0]
  ------------------
14057|  1.02k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.02k|        return object_element;
14064|  1.02k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRddTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  53.0k|    {
32411|  53.0k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  53.0k|        set_parents();
32413|  53.0k|        assert_invariant();
32414|  53.0k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIdvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERdEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  53.0k|    {
 7869|  53.0k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  53.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERdEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  53.0k|    {
 7813|  53.0k|        return to_json(j, std::forward<T>(val));
 7814|  53.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEdTnNS4_9enable_ifIXsr3std17is_floating_pointIT0_EE5valueEiE4typeELi0EEEvRT_SI_:
 7505|  53.0k|{
 7506|  53.0k|    external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
 7507|  53.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE7EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_14number_float_tE:
 7295|  53.0k|    {
 7296|  53.0k|        j.replace_value(value_t::number_float, val);
 7297|  53.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13replace_valueENS0_6detail7value_tERKNSE_10json_valueE:
31210|   599k|    {
31211|   599k|        m_data.m_value.destroy(m_data.m_type);
31212|   599k|        m_data.m_value = v;
31213|   599k|        m_data.m_type = t;
31214|   599k|        set_parents();
31215|   599k|        assert_invariant();
31216|   599k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Ed:
30661|  53.0k|        json_value(number_float_t v) noexcept : number_float(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIcEEmPT_m:
 8644|  52.6k|    {
 8645|  52.6k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  52.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIcEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  52.6k|    {
 8703|  52.6k|        const std::size_t wanted = count * sizeof(T);
 8704|  52.6k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  52.6k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  52.6k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  52.6k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 51.6k, False: 981]
  |  |  ------------------
  ------------------
 8707|  51.6k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  51.6k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  51.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 51.6k, False: 0]
  ------------------
 8712|  51.6k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  51.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 51.6k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  51.6k|            std::memcpy(dest, &*current, copied);
 8716|  51.6k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  51.6k|        }
 8718|  52.6k|        return copied;
 8719|  52.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6stringERSC_:
13914|  46.0k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  46.0k|        handle_value(std::move(val));
13918|  46.0k|        return true;
13919|  46.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueISC_EEPSG_OT_:
14030|  46.0k|    {
14031|  46.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 1.56k, False: 44.4k]
  ------------------
14032|  1.56k|        {
14033|  1.56k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  1.56k|            return &root;
14040|  1.56k|        }
14041|       |
14042|  44.4k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  44.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 33.3k, False: 11.1k]
  |  Branch (14042:9): [True: 11.1k, False: 0]
  |  Branch (14042:9): [True: 44.4k, False: 0]
  ------------------
14043|       |
14044|  44.4k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 33.3k, False: 11.1k]
  ------------------
14045|  33.3k|        {
14046|  33.3k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  33.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  33.3k|        }
14054|       |
14055|  11.1k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  11.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 11.1k, False: 0]
  ------------------
14056|  11.1k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  11.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 11.1k, False: 0]
  ------------------
14057|  11.1k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  11.1k|        return object_element;
14064|  11.1k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ISA_SA_TnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SH_EE5valueEiE4typeELi0EEEOT_:
32410|  85.8k|    {
32411|  85.8k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  85.8k|        set_parents();
32413|  85.8k|        assert_invariant();
32414|  85.8k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvE7to_jsonINS0_10basic_jsonINS2_3mapENS2_6vectorES8_blmdS6_S1_NSD_IhNS6_IhEEEEvEES8_EEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 7868|  85.8k|    {
 7869|  85.8k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  85.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEESD_EEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 7812|  85.8k|    {
 7813|  85.8k|        return to_json(j, std::forward<T>(val));
 7814|  85.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_ONSH_8string_tE:
 7498|  85.8k|{
 7499|  85.8k|    external_constructor<value_t::string>::construct(j, std::move(s));
 7500|  85.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE3EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_ONSK_8string_tE:
 7257|  85.8k|    {
 7258|  85.8k|        const typename BasicJsonType::json_value value(std::move(s));
 7259|  85.8k|        j.replace_value(value_t::string, value);
 7260|  85.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2EOSA_:
30752|  85.8k|        json_value(string_t&& value) : string(create<string_t>(std::move(value))) {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createISA_JSA_EEEPT_DpOT0_:
30589|  85.8k|    {
30590|  85.8k|        AllocatorType<T> alloc;
30591|  85.8k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  85.8k|        auto deleter = [&](T * obj)
30594|  85.8k|        {
30595|  85.8k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  85.8k|        };
30597|  85.8k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  85.8k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  85.8k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  85.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 85.8k, False: 0]
  ------------------
30600|  85.8k|        return obj.release();
30601|  85.8k|    }
_ZN8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEEC2Ev:
 7906|   178k|        : container_type()
 7907|   178k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIhEEmPT_m:
 8644|  33.1k|    {
 8645|  33.1k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  33.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIhEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  33.1k|    {
 8703|  33.1k|        const std::size_t wanted = count * sizeof(T);
 8704|  33.1k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  33.1k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  33.1k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  33.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 32.0k, False: 1.09k]
  |  |  ------------------
  ------------------
 8707|  32.0k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  32.0k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  32.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 32.0k, False: 0]
  ------------------
 8712|  32.0k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  32.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 32.0k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  32.0k|            std::memcpy(dest, &*current, copied);
 8716|  32.0k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  32.0k|        }
 8718|  33.1k|        return copied;
 8719|  33.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  97.4k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  97.4k|        handle_value(std::move(val));
13926|  97.4k|        return true;
13927|  97.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  97.4k|    {
14031|  97.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 387, False: 97.0k]
  ------------------
14032|    387|        {
14033|    387|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    387|            return &root;
14040|    387|        }
14041|       |
14042|  97.0k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  97.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 90.2k, False: 6.81k]
  |  Branch (14042:9): [True: 6.81k, False: 0]
  |  Branch (14042:9): [True: 97.0k, False: 0]
  ------------------
14043|       |
14044|  97.0k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 90.2k, False: 6.81k]
  ------------------
14045|  90.2k|        {
14046|  90.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  90.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  90.2k|        }
14054|       |
14055|  6.81k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  6.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 6.81k, False: 0]
  ------------------
14056|  6.81k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  6.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 6.81k, False: 0]
  ------------------
14057|  6.81k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  6.81k|        return object_element;
14064|  6.81k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2INS0_27byte_container_with_subtypeISD_EESH_TnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SJ_EE5valueEiE4typeELi0EEEOT_:
32410|   174k|    {
32411|   174k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|   174k|        set_parents();
32413|   174k|        assert_invariant();
32414|   174k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerINS0_27byte_container_with_subtypeINSt3__16vectorIhNS3_9allocatorIhEEEEEEvE7to_jsonINS0_10basic_jsonINS3_3mapES4_NS3_12basic_stringIcNS3_11char_traitsIcEENS5_IcEEEEblmdS5_S1_S7_vEES8_EEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSK_:
 7868|   174k|    {
 7869|   174k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|   174k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS0_27byte_container_with_subtypeISG_EEEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSK_:
 7812|   174k|    {
 7813|   174k|        return to_json(j, std::forward<T>(val));
 7814|   174k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_RKNSH_8binary_tE:
 7637|   174k|{
 7638|   174k|    external_constructor<value_t::binary>::construct(j, bin);
 7639|   174k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE8EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_RKNSK_8binary_tE:
 7277|   174k|    {
 7278|   174k|        const typename BasicJsonType::json_value value(b);
 7279|   174k|        j.replace_value(value_t::binary, value);
 7280|   174k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ERKNS0_27byte_container_with_subtypeISD_EE:
30773|   174k|        json_value(const binary_t& value) : binary(create<binary_t>(value)) {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS0_27byte_container_with_subtypeISD_EEJRKSH_EEEPT_DpOT0_:
30589|   174k|    {
30590|   174k|        AllocatorType<T> alloc;
30591|   174k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|   174k|        auto deleter = [&](T * obj)
30594|   174k|        {
30595|   174k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|   174k|        };
30597|   174k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|   174k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|   174k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|   174k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 174k, False: 0]
  ------------------
30600|   174k|        return obj.release();
30601|   174k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIhLb0EEEbRT_:
18739|  14.0k|    {
18740|       |        // read in the original format
18741|       |
18742|  14.0k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  14.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 34, False: 13.9k]
  |  |  ------------------
  ------------------
18743|     34|        {
18744|     34|            return false;
18745|     34|        }
18746|  13.9k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 13.9k, False: 68]
  |  Branch (18746:34): [Folded, False: 13.9k]
  |  Branch (18746:57): [True: 0, False: 13.9k]
  ------------------
18747|  13.9k|        {
18748|  13.9k|            byte_swap(result);
18749|  13.9k|        }
18750|  13.9k|        return true;
18751|  14.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIhEEbRT_PKc:
18667|  14.0k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  14.0k|        auto new_chars_read = ia.get_elements(&dest);
18671|  14.0k|        chars_read += new_chars_read;
18672|  14.0k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  14.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 102, False: 13.9k]
  |  |  ------------------
  ------------------
18673|    102|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|    102|            ++chars_read;
18676|    102|            static_cast<void>(report_eof(context));
18677|    102|            return false;
18678|    102|        }
18679|  13.9k|        return true;
18680|  14.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIhEEvRT_:
18698|  13.9k|    {
18699|  13.9k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  13.9k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  13.9k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 13.9k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  13.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE7booleanEb:
13890|  13.0k|    {
13891|  13.0k|        handle_value(val);
13892|  13.0k|        return true;
13893|  13.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRbEEPSG_OT_:
14030|  13.0k|    {
14031|  13.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 14, False: 13.0k]
  ------------------
14032|     14|        {
14033|     14|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|     14|            return &root;
14040|     14|        }
14041|       |
14042|  13.0k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 10.8k, False: 2.15k]
  |  Branch (14042:9): [True: 2.15k, False: 0]
  |  Branch (14042:9): [True: 13.0k, False: 0]
  ------------------
14043|       |
14044|  13.0k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 10.8k, False: 2.15k]
  ------------------
14045|  10.8k|        {
14046|  10.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  10.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  10.8k|        }
14054|       |
14055|  2.15k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.15k, False: 0]
  ------------------
14056|  2.15k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.15k, False: 0]
  ------------------
14057|  2.15k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.15k|        return object_element;
14064|  2.15k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRbbTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|  24.5k|    {
32411|  24.5k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  24.5k|        set_parents();
32413|  24.5k|        assert_invariant();
32414|  24.5k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIbvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERbEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|  24.5k|    {
 7869|  24.5k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  24.5k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERbEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|  24.5k|    {
 7813|  24.5k|        return to_json(j, std::forward<T>(val));
 7814|  24.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEbTnNS4_9enable_ifIXsr3std7is_sameIT0_NT_9boolean_tEEE5valueEiE4typeELi0EEEvRSJ_SI_:
 7472|  24.5k|{
 7473|  24.5k|    external_constructor<value_t::boolean>::construct(j, b);
 7474|  24.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE4EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_9boolean_tE:
 7240|  24.5k|    {
 7241|  24.5k|        j.replace_value(value_t::boolean, b);
 7242|  24.5k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Eb:
30655|  24.5k|        json_value(boolean_t v) noexcept : boolean(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE4nullEv:
13884|  9.09k|    {
13885|  9.09k|        handle_value(nullptr);
13886|  9.09k|        return true;
13887|  9.09k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIDnEEPSG_OT_:
14030|  9.09k|    {
14031|  9.09k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 7, False: 9.08k]
  ------------------
14032|      7|        {
14033|      7|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      7|            return &root;
14040|      7|        }
14041|       |
14042|  9.08k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.08k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 7.86k, False: 1.21k]
  |  Branch (14042:9): [True: 1.21k, False: 0]
  |  Branch (14042:9): [True: 9.08k, False: 0]
  ------------------
14043|       |
14044|  9.08k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 7.86k, False: 1.21k]
  ------------------
14045|  7.86k|        {
14046|  7.86k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  7.86k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  7.86k|        }
14054|       |
14055|  1.21k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.21k, False: 0]
  ------------------
14056|  1.21k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.21k, False: 0]
  ------------------
14057|  1.21k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.21k|        return object_element;
14064|  1.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE14number_integerEl:
13896|  58.3k|    {
13897|  58.3k|        handle_value(val);
13898|  58.3k|        return true;
13899|  58.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRlEEPSG_OT_:
14030|  58.3k|    {
14031|  58.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 1.29k, False: 57.0k]
  ------------------
14032|  1.29k|        {
14033|  1.29k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  1.29k|            return &root;
14040|  1.29k|        }
14041|       |
14042|  57.0k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  57.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 44.8k, False: 12.2k]
  |  Branch (14042:9): [True: 12.2k, False: 0]
  |  Branch (14042:9): [True: 57.0k, False: 0]
  ------------------
14043|       |
14044|  57.0k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 44.8k, False: 12.2k]
  ------------------
14045|  44.8k|        {
14046|  44.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  44.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  44.8k|        }
14054|       |
14055|  12.2k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 12.2k, False: 0]
  ------------------
14056|  12.2k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  12.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 12.2k, False: 0]
  ------------------
14057|  12.2k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  12.2k|        return object_element;
14064|  12.2k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRllTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|   108k|    {
32411|   108k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|   108k|        set_parents();
32413|   108k|        assert_invariant();
32414|   108k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIlvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERlEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|   108k|    {
 7869|   108k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|   108k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERlEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|   108k|    {
 7813|   108k|        return to_json(j, std::forward<T>(val));
 7814|   108k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEElTnNS4_9enable_ifIXsr33is_compatible_number_integer_typeIT_T0_EE5valueEiE4typeELi0EEEvRSI_SJ_:
 7519|   108k|{
 7520|   108k|    external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
 7521|   108k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE5EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_16number_integer_tE:
 7315|   108k|    {
 7316|   108k|        j.replace_value(value_t::number_integer, val);
 7317|   108k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2El:
30657|   108k|        json_value(number_integer_t v) noexcept : number_integer(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE15number_unsignedEm:
13902|  83.0k|    {
13903|  83.0k|        handle_value(val);
13904|  83.0k|        return true;
13905|  83.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRmEEPSG_OT_:
14030|  83.0k|    {
14031|  83.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 1.10k, False: 81.9k]
  ------------------
14032|  1.10k|        {
14033|  1.10k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  1.10k|            return &root;
14040|  1.10k|        }
14041|       |
14042|  81.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  81.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 75.3k, False: 6.59k]
  |  Branch (14042:9): [True: 6.59k, False: 0]
  |  Branch (14042:9): [True: 81.9k, False: 0]
  ------------------
14043|       |
14044|  81.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 75.3k, False: 6.59k]
  ------------------
14045|  75.3k|        {
14046|  75.3k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  75.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  75.3k|        }
14054|       |
14055|  6.59k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  6.59k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 6.59k, False: 0]
  ------------------
14056|  6.59k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  6.59k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 6.59k, False: 0]
  ------------------
14057|  6.59k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  6.59k|        return object_element;
14064|  6.59k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRmmTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
32410|   152k|    {
32411|   152k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|   152k|        set_parents();
32413|   152k|        assert_invariant();
32414|   152k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerImvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERmEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7868|   152k|    {
 7869|   152k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|   152k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERmEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 7812|   152k|    {
 7813|   152k|        return to_json(j, std::forward<T>(val));
 7814|   152k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEmTnNS4_9enable_ifIXsr26is_compatible_integer_typeINS4_11conditionalIXsr3std7is_sameINT_16number_integer_tENSJ_17number_unsigned_tEEE5valueENS1_27same_as_number_integer_typeESL_E4typeET0_EE5valueEiE4typeELi0EEEvRSJ_SP_:
 7512|   152k|{
 7513|   152k|    external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
 7514|   152k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE6EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_17number_unsigned_tE:
 7305|   152k|    {
 7306|   152k|        j.replace_value(value_t::number_unsigned, val);
 7307|   152k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Em:
30659|   152k|        json_value(detail::number_unsigned_overload_type<NumberIntegerType, NumberUnsignedType> v) noexcept : number_unsigned(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10emit_floatIeEEbT_:
18825|    492|    {
18826|    492|        const auto result = static_cast<number_float_t>(number);
18827|    492|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|    984|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 492]
  |  |  |  Branch (1667:94): [True: 492, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 492]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    492|        return sax->number_float(result, "");
18832|    492|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toImEEbRT_PKc:
18667|  9.86k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  9.86k|        auto new_chars_read = ia.get_elements(&dest);
18671|  9.86k|        chars_read += new_chars_read;
18672|  9.86k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  9.86k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 240, False: 9.62k]
  |  |  ------------------
  ------------------
18673|    240|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|    240|            ++chars_read;
18676|    240|            static_cast<void>(report_eof(context));
18677|    240|            return false;
18678|    240|        }
18679|  9.62k|        return true;
18680|  9.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsImEEmPT_m:
 8644|  9.86k|    {
 8645|  9.86k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  9.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implImEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  9.86k|    {
 8703|  9.86k|        const std::size_t wanted = count * sizeof(T);
 8704|  9.86k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  9.86k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  9.86k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  9.86k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 9.77k, False: 93]
  |  |  ------------------
  ------------------
 8707|  9.77k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  9.77k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  9.77k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 9.77k, False: 0]
  ------------------
 8712|  9.77k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  9.77k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 9.77k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  9.77k|            std::memcpy(dest, &*current, copied);
 8716|  9.77k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  9.77k|        }
 8718|  9.86k|        return copied;
 8719|  9.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapImEEvRT_:
18698|  9.62k|    {
18699|  9.62k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  9.62k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  48.1k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 38.4k, False: 9.62k]
  ------------------
18715|  38.4k|            {
18716|  38.4k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  38.4k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  9.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedImEEbT_:
18799|  2.49k|    {
18800|  2.49k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  2.49k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.49k, False: 0]
  |  |  ------------------
  ------------------
18801|  2.49k|        {
18802|  2.49k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  2.49k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  2.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImmEEbT0_:
 5101|  19.7k|{
 5102|  19.7k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  19.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImmLb1EvE4testEm:
 5094|  19.7k|    {
 5095|  19.7k|        return true;
 5096|  19.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE19parse_cbor_internalENS1_18cbor_tag_handler_tE:
16340|  23.7k|    {
16341|       |        // whether the next value starts at a fresh byte or at the one already
16342|       |        // read into `current`
16343|  23.7k|        bool fetch = true;
16344|       |
16345|       |        // the key currently being read; hoisted out of the loop so that its
16346|       |        // capacity is reused across elements and across nesting levels
16347|  23.7k|        string_t key;
16348|       |
16349|  1.12M|        while (true)
  ------------------
  |  Branch (16349:16): [True: 1.11M, Folded]
  ------------------
16350|  1.11M|        {
16351|  1.11M|            if (!container_stack.empty())
  ------------------
  |  Branch (16351:17): [True: 1.09M, False: 23.7k]
  ------------------
16352|  1.09M|            {
16353|       |                // a copy, not a reference: it must stay valid across the
16354|       |                // pop_back() below, which destroys the container_stack element
16355|       |                // it would otherwise alias
16356|  1.09M|                const container_frame top = container_stack.back();
16357|  1.09M|                bool at_end = false;
16358|       |
16359|  1.09M|                if (top.remaining != npos)
  ------------------
  |  Branch (16359:21): [True: 804k, False: 288k]
  ------------------
16360|   804k|                {
16361|       |                    // definite length: the container ends once its elements
16362|       |                    // have been read
16363|   804k|                    at_end = (top.remaining == 0);
16364|   804k|                    if (!at_end)
  ------------------
  |  Branch (16364:25): [True: 465k, False: 338k]
  ------------------
16365|   465k|                    {
16366|       |                        // claim the element about to be read
16367|   465k|                        --container_stack.back().remaining;
16368|   465k|                        if (top.is_object)
  ------------------
  |  Branch (16368:29): [True: 71.7k, False: 394k]
  ------------------
16369|  71.7k|                        {
16370|  71.7k|                            get();
16371|  71.7k|                        }
16372|   465k|                    }
16373|   804k|                    fetch = true;
16374|   804k|                }
16375|   288k|                else
16376|   288k|                {
16377|       |                    // indefinite length: the container ends at a break marker.
16378|       |                    // Testing for it consumes a byte, which is the first byte
16379|       |                    // of the next element when it is not one.
16380|   288k|                    at_end = (get() == 0xFF);
16381|   288k|                    fetch = top.is_object;
16382|   288k|                }
16383|       |
16384|  1.09M|                if (at_end)
  ------------------
  |  Branch (16384:21): [True: 344k, False: 748k]
  ------------------
16385|   344k|                {
16386|   344k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|   344k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 344k]
  |  |  ------------------
  ------------------
16387|      0|                    {
16388|      0|                        return false;
16389|      0|                    }
16390|       |                    // the value begun here is complete once its container is
16391|   344k|                    if (container_stack.empty())
  ------------------
  |  Branch (16391:25): [True: 8.48k, False: 336k]
  ------------------
16392|  8.48k|                    {
16393|  8.48k|                        return true;
16394|  8.48k|                    }
16395|   336k|                    continue;
16396|   344k|                }
16397|       |
16398|   748k|                if (top.is_object)
  ------------------
  |  Branch (16398:21): [True: 96.2k, False: 652k]
  ------------------
16399|  96.2k|                {
16400|  96.2k|                    key.clear();
16401|  96.2k|                    if (JSON_HEDLEY_UNLIKELY(!get_cbor_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|   191k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 432, False: 95.8k]
  |  |  |  Branch (1667:94): [True: 1.29k, False: 94.9k]
  |  |  |  Branch (1667:94): [True: 0, False: 94.9k]
  |  |  ------------------
  ------------------
16402|    432|                    {
16403|    432|                        return false;
16404|    432|                    }
16405|  95.8k|                    fetch = true;
16406|  95.8k|                }
16407|   748k|            }
16408|       |
16409|       |            // a tag is not a value of its own: read on until the tagged value
16410|   771k|            bool tag_pending = false;
16411|   771k|            bool item_read = false;
16412|   771k|            do
16413|   771k|            {
16414|   771k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1667|   771k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.59k, False: 769k]
  |  |  ------------------
  ------------------
16415|  2.59k|                {
16416|  2.59k|                    return false;
16417|  2.59k|                }
16418|   769k|                fetch = !item_read;
16419|   769k|            }
16420|   771k|            while (tag_pending);
  ------------------
  |  Branch (16420:20): [True: 0, False: 769k]
  ------------------
16421|       |
16422|       |            // a value that opened a container left it on the stack; one that
16423|       |            // did not, and that was not inside a container, was the whole value
16424|   769k|            if (container_stack.empty())
  ------------------
  |  Branch (16424:17): [True: 6.19k, False: 762k]
  ------------------
16425|  6.19k|            {
16426|  6.19k|                return true;
16427|  6.19k|            }
16428|   769k|        }
16429|  23.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE19get_cbor_object_keyERSC_:
16039|  96.2k|    {
16040|       |        // EOF and major type 3 (text string) are left to get_cbor_string
16041|  96.2k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (16041:13): [True: 849, False: 95.3k]
  |  Branch (16041:57): [True: 95.0k, False: 381]
  ------------------
16042|  95.8k|        {
16043|  95.8k|            return get_cbor_string(result, "key");
16044|  95.8k|        }
16045|       |
16046|    381|        const char* found = nullptr;
16047|    381|        switch (static_cast<unsigned int>(current) >> 5u)
16048|    381|        {
16049|    105|            case 0:
  ------------------
  |  Branch (16049:13): [True: 105, False: 276]
  ------------------
16050|    105|                found = "an unsigned integer";
16051|    105|                break;
16052|     51|            case 1:
  ------------------
  |  Branch (16052:13): [True: 51, False: 330]
  ------------------
16053|     51|                found = "a negative integer";
16054|     51|                break;
16055|     33|            case 2:
  ------------------
  |  Branch (16055:13): [True: 33, False: 348]
  ------------------
16056|     33|                found = "a byte string";
16057|     33|                break;
16058|     33|            case 4:
  ------------------
  |  Branch (16058:13): [True: 33, False: 348]
  ------------------
16059|     33|                found = "an array";
16060|     33|                break;
16061|     75|            case 5:
  ------------------
  |  Branch (16061:13): [True: 75, False: 306]
  ------------------
16062|     75|                found = "a map";
16063|     75|                break;
16064|     15|            case 6:
  ------------------
  |  Branch (16064:13): [True: 15, False: 366]
  ------------------
16065|     15|                found = "a tag";
16066|     15|                break;
16067|     69|            default: // major type 7
  ------------------
  |  Branch (16067:13): [True: 69, False: 312]
  ------------------
16068|     69|                switch (current)
16069|     69|                {
16070|      3|                    case 0xF4:
  ------------------
  |  Branch (16070:21): [True: 3, False: 66]
  ------------------
16071|      3|                    case 0xF5:
  ------------------
  |  Branch (16071:21): [True: 0, False: 69]
  ------------------
16072|      3|                        found = "a boolean";
16073|      3|                        break;
16074|      0|                    case 0xF6:
  ------------------
  |  Branch (16074:21): [True: 0, False: 69]
  ------------------
16075|      0|                        found = "null";
16076|      0|                        break;
16077|      3|                    case 0xF7:
  ------------------
  |  Branch (16077:21): [True: 3, False: 66]
  ------------------
16078|      3|                        found = "undefined";
16079|      3|                        break;
16080|      3|                    case 0xF9:
  ------------------
  |  Branch (16080:21): [True: 3, False: 66]
  ------------------
16081|      3|                    case 0xFA:
  ------------------
  |  Branch (16081:21): [True: 0, False: 69]
  ------------------
16082|      3|                    case 0xFB:
  ------------------
  |  Branch (16082:21): [True: 0, False: 69]
  ------------------
16083|      3|                        found = "a floating-point number";
16084|      3|                        break;
16085|     15|                    case 0xFF:
  ------------------
  |  Branch (16085:21): [True: 15, False: 54]
  ------------------
16086|     15|                        found = "a break stop code";
16087|     15|                        break;
16088|     45|                    default:
  ------------------
  |  Branch (16088:21): [True: 45, False: 24]
  ------------------
16089|     45|                        found = "a simple value";
16090|     45|                        break;
16091|     69|                }
16092|     69|                break;
16093|    381|        }
16094|       |
16095|    381|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16096|    381|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15get_cbor_stringERSC_PKc:
15982|   143k|    {
15983|       |        // read chunks iteratively, but reject a second indefinite-length
15984|       |        // level as required by RFC 8949, Section 3.2.3
15985|   143k|        bool indefinite = false;
15986|       |
15987|   149k|        while (true)
  ------------------
  |  Branch (15987:16): [True: 148k, Folded]
  ------------------
15988|   148k|        {
15989|   148k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|   148k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 299, False: 147k]
  |  |  ------------------
  ------------------
15990|    299|            {
15991|    299|                return false;
15992|    299|            }
15993|       |
15994|   147k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15994:17): [True: 1.65k, False: 146k]
  ------------------
15995|  1.65k|            {
15996|  1.65k|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|  1.65k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 9, False: 1.64k]
  |  |  ------------------
  ------------------
15997|      9|                {
15998|      9|                    return cbor_indefinite_string_error("string", "string");
15999|      9|                }
16000|  1.64k|                indefinite = true;
16001|  1.64k|                get();
16002|  1.64k|                continue;
16003|  1.65k|            }
16004|       |
16005|       |            // a break marker closes the indefinite-length string; outside
16006|       |            // of one it falls through to the error below
16007|   146k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16007:17): [True: 4.50k, False: 141k]
  |  Branch (16007:31): [True: 1.40k, False: 3.09k]
  ------------------
16008|  1.40k|            {
16009|  1.40k|                return check_string_utf8(result, context);
16010|  1.40k|            }
16011|       |
16012|   144k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, indefinite)))
  ------------------
  |  | 1667|   144k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 529, False: 144k]
  |  |  ------------------
  ------------------
16013|    529|            {
16014|    529|                return false;
16015|    529|            }
16016|       |
16017|   144k|            if (!indefinite)
  ------------------
  |  Branch (16017:17): [True: 139k, False: 4.57k]
  ------------------
16018|   139k|            {
16019|   139k|                return check_string_utf8(result, context);
16020|   139k|            }
16021|       |
16022|  4.57k|            get();
16023|  4.57k|        }
16024|   143k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE28cbor_indefinite_string_errorEPKcSP_:
15887|     18|    {
15888|     18|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
15889|     18|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA19_KcRPSA_RA42_SA_SE_RA16_SA_S9_EEET_DpOT0_:
 5318|     36|{
 5319|     36|    OutStringType str;
 5320|     36|    str.reserve(concat_length(args...));
 5321|     36|    concat_into(str, std::forward<Args>(args)...);
 5322|     36|    return str;
 5323|     36|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA42_cS4_A16_cNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEEEEmS4_DpRKT_:
 5222|     36|{
 5223|     36|    return ::strlen(cstr) + concat_length(rest...);
 5224|     36|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA42_cPKcA16_cNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEEEEmS5_DpRKT_:
 5222|     36|{
 5223|     36|    return ::strlen(cstr) + concat_length(rest...);
 5224|     36|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA16_cNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEEEEmS4_DpRKT_:
 5222|     36|{
 5223|     36|    return ::strlen(cstr) + concat_length(rest...);
 5224|     36|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA16_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  1.72k|{
 5223|  1.72k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  1.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA19_KcJRPSA_RA42_SA_SE_RA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSK_OSL_DpOT1_:
 5281|     36|{
 5282|     36|    out.append(std::forward<Arg>(arg));
 5283|     36|    concat_into(out, std::forward<Args>(rest)...);
 5284|     36|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA42_SA_SC_RA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|     36|{
 5282|     36|    out.append(std::forward<Arg>(arg));
 5283|     36|    concat_into(out, std::forward<Args>(rest)...);
 5284|     36|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA42_KcJRPSA_RA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|     36|{
 5282|     36|    out.append(std::forward<Arg>(arg));
 5283|     36|    concat_into(out, std::forward<Args>(rest)...);
 5284|     36|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  1.72k|{
 5282|  1.72k|    out.append(std::forward<Arg>(arg));
 5283|  1.72k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA16_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  1.72k|{
 5282|  1.72k|    out.append(std::forward<Arg>(arg));
 5283|  1.72k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE21get_cbor_string_chunkERSC_b:
15907|   144k|    {
15908|   144k|        switch (current)
15909|   144k|        {
15910|       |            // UTF-8 string (0x00..0x17 bytes follow)
15911|  87.5k|            case 0x60:
  ------------------
  |  Branch (15911:13): [True: 87.5k, False: 56.5k]
  ------------------
15912|   119k|            case 0x61:
  ------------------
  |  Branch (15912:13): [True: 31.5k, False: 112k]
  ------------------
15913|   121k|            case 0x62:
  ------------------
  |  Branch (15913:13): [True: 2.64k, False: 141k]
  ------------------
15914|   122k|            case 0x63:
  ------------------
  |  Branch (15914:13): [True: 1.07k, False: 142k]
  ------------------
15915|   123k|            case 0x64:
  ------------------
  |  Branch (15915:13): [True: 892, False: 143k]
  ------------------
15916|   125k|            case 0x65:
  ------------------
  |  Branch (15916:13): [True: 1.44k, False: 142k]
  ------------------
15917|   126k|            case 0x66:
  ------------------
  |  Branch (15917:13): [True: 1.02k, False: 143k]
  ------------------
15918|   126k|            case 0x67:
  ------------------
  |  Branch (15918:13): [True: 585, False: 143k]
  ------------------
15919|   127k|            case 0x68:
  ------------------
  |  Branch (15919:13): [True: 995, False: 143k]
  ------------------
15920|   128k|            case 0x69:
  ------------------
  |  Branch (15920:13): [True: 417, False: 143k]
  ------------------
15921|   128k|            case 0x6A:
  ------------------
  |  Branch (15921:13): [True: 575, False: 143k]
  ------------------
15922|   129k|            case 0x6B:
  ------------------
  |  Branch (15922:13): [True: 532, False: 143k]
  ------------------
15923|   130k|            case 0x6C:
  ------------------
  |  Branch (15923:13): [True: 766, False: 143k]
  ------------------
15924|   130k|            case 0x6D:
  ------------------
  |  Branch (15924:13): [True: 417, False: 143k]
  ------------------
15925|   130k|            case 0x6E:
  ------------------
  |  Branch (15925:13): [True: 244, False: 143k]
  ------------------
15926|   131k|            case 0x6F:
  ------------------
  |  Branch (15926:13): [True: 382, False: 143k]
  ------------------
15927|   131k|            case 0x70:
  ------------------
  |  Branch (15927:13): [True: 382, False: 143k]
  ------------------
15928|   131k|            case 0x71:
  ------------------
  |  Branch (15928:13): [True: 280, False: 143k]
  ------------------
15929|   132k|            case 0x72:
  ------------------
  |  Branch (15929:13): [True: 349, False: 143k]
  ------------------
15930|   132k|            case 0x73:
  ------------------
  |  Branch (15930:13): [True: 256, False: 143k]
  ------------------
15931|   132k|            case 0x74:
  ------------------
  |  Branch (15931:13): [True: 420, False: 143k]
  ------------------
15932|   133k|            case 0x75:
  ------------------
  |  Branch (15932:13): [True: 251, False: 143k]
  ------------------
15933|   133k|            case 0x76:
  ------------------
  |  Branch (15933:13): [True: 237, False: 143k]
  ------------------
15934|   134k|            case 0x77:
  ------------------
  |  Branch (15934:13): [True: 939, False: 143k]
  ------------------
15935|   134k|            {
15936|   134k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
15937|   133k|            }
15938|       |
15939|  3.94k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15939:13): [True: 3.94k, False: 140k]
  ------------------
15940|  3.94k|            {
15941|  3.94k|                std::uint8_t len{};
15942|  3.94k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15942:24): [True: 3.91k, False: 24]
  |  Branch (15942:43): [True: 3.80k, False: 108]
  ------------------
15943|   133k|            }
15944|       |
15945|  3.54k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15945:13): [True: 3.54k, False: 140k]
  ------------------
15946|  3.54k|            {
15947|  3.54k|                std::uint16_t len{};
15948|  3.54k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15948:24): [True: 3.51k, False: 30]
  |  Branch (15948:43): [True: 3.32k, False: 186]
  ------------------
15949|   133k|            }
15950|       |
15951|    765|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15951:13): [True: 765, False: 143k]
  ------------------
15952|    765|            {
15953|    765|                std::uint32_t len{};
15954|    765|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15954:24): [True: 729, False: 36]
  |  Branch (15954:43): [True: 534, False: 195]
  ------------------
15955|   133k|            }
15956|       |
15957|  1.46k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15957:13): [True: 1.46k, False: 142k]
  ------------------
15958|  1.46k|            {
15959|  1.46k|                std::uint64_t len{};
15960|  1.46k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15960:24): [True: 1.41k, False: 48]
  |  Branch (15960:43): [True: 1.03k, False: 381]
  ------------------
15961|   133k|            }
15962|       |
15963|     99|            default:
  ------------------
  |  Branch (15963:13): [True: 99, False: 143k]
  ------------------
15964|     99|            {
15965|     99|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (15965:133): [True: 90, False: 9]
  ------------------
15966|   133k|            }
15967|   144k|        }
15968|   144k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_stringIjEEbT_RSC_:
18910|   134k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|   134k|        return get_bytes(len, "string", result);
18921|   134k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|   134k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|   134k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|   181k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 46.9k, False: 134k]
  ------------------
19003|  46.9k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  46.9k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 46.7k, False: 132]
  ------------------
19007|  46.9k|                                       ? static_cast<std::size_t>(len)
19008|  46.9k|                                       : chunk_size;
19009|  46.9k|            const std::size_t old_size = result.size();
19010|  46.9k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  46.9k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  46.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 46.9k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  46.9k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  46.9k|            chars_read += bytes_read;
19018|  46.9k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  46.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 675, False: 46.2k]
  |  |  ------------------
  ------------------
19019|    675|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    675|                result.resize(old_size + bytes_read);
19024|    675|                ++chars_read;
19025|    675|                current = char_traits<char_type>::eof();
19026|    675|                return unexpect_eof(context);
19027|    675|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  46.2k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  46.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 46.2k, False: 0]
  ------------------
19030|  46.2k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  46.2k|        }
19032|   134k|        return true;
19033|   134k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_stringIhEEbT_RSC_:
18910|  3.91k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  3.91k|        return get_bytes(len, "string", result);
18921|  3.91k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  3.91k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  3.91k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  6.93k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 3.12k, False: 3.80k]
  ------------------
19003|  3.12k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  3.12k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 3.12k, False: 0]
  ------------------
19007|  3.12k|                                       ? static_cast<std::size_t>(len)
19008|  3.12k|                                       : chunk_size;
19009|  3.12k|            const std::size_t old_size = result.size();
19010|  3.12k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  3.12k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  3.12k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 3.12k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  3.12k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  3.12k|            chars_read += bytes_read;
19018|  3.12k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  3.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 108, False: 3.01k]
  |  |  ------------------
  ------------------
19019|    108|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    108|                result.resize(old_size + bytes_read);
19024|    108|                ++chars_read;
19025|    108|                current = char_traits<char_type>::eof();
19026|    108|                return unexpect_eof(context);
19027|    108|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  3.01k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  3.01k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 3.01k, False: 0]
  ------------------
19030|  3.01k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  3.01k|        }
19032|  3.80k|        return true;
19033|  3.91k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberItLb0EEEbRT_:
18739|  11.9k|    {
18740|       |        // read in the original format
18741|       |
18742|  11.9k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  11.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 48, False: 11.8k]
  |  |  ------------------
  ------------------
18743|     48|        {
18744|     48|            return false;
18745|     48|        }
18746|  11.8k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 11.7k, False: 96]
  |  Branch (18746:34): [Folded, False: 11.7k]
  |  Branch (18746:57): [True: 0, False: 11.7k]
  ------------------
18747|  11.7k|        {
18748|  11.7k|            byte_swap(result);
18749|  11.7k|        }
18750|  11.8k|        return true;
18751|  11.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toItEEbRT_PKc:
18667|  11.9k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  11.9k|        auto new_chars_read = ia.get_elements(&dest);
18671|  11.9k|        chars_read += new_chars_read;
18672|  11.9k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  11.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 144, False: 11.7k]
  |  |  ------------------
  ------------------
18673|    144|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|    144|            ++chars_read;
18676|    144|            static_cast<void>(report_eof(context));
18677|    144|            return false;
18678|    144|        }
18679|  11.7k|        return true;
18680|  11.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsItEEmPT_m:
 8644|  11.9k|    {
 8645|  11.9k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  11.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implItEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  11.9k|    {
 8703|  11.9k|        const std::size_t wanted = count * sizeof(T);
 8704|  11.9k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  11.9k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  11.9k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  11.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 11.7k, False: 117]
  |  |  ------------------
  ------------------
 8707|  11.7k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  11.7k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  11.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 11.7k, False: 0]
  ------------------
 8712|  11.7k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  11.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 11.7k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  11.7k|            std::memcpy(dest, &*current, copied);
 8716|  11.7k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  11.7k|        }
 8718|  11.9k|        return copied;
 8719|  11.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapItEEvRT_:
18698|  11.7k|    {
18699|  11.7k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  11.7k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  23.5k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 11.7k, False: 11.7k]
  ------------------
18715|  11.7k|            {
18716|  11.7k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  11.7k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  11.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_stringItEEbT_RSC_:
18910|  3.51k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  3.51k|        return get_bytes(len, "string", result);
18921|  3.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|  3.51k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  3.51k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  5.11k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.79k, False: 3.32k]
  ------------------
19003|  1.79k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.79k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.73k, False: 60]
  ------------------
19007|  1.79k|                                       ? static_cast<std::size_t>(len)
19008|  1.79k|                                       : chunk_size;
19009|  1.79k|            const std::size_t old_size = result.size();
19010|  1.79k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.79k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.79k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.79k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.79k|            chars_read += bytes_read;
19018|  1.79k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.79k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 186, False: 1.60k]
  |  |  ------------------
  ------------------
19019|    186|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    186|                result.resize(old_size + bytes_read);
19024|    186|                ++chars_read;
19025|    186|                current = char_traits<char_type>::eof();
19026|    186|                return unexpect_eof(context);
19027|    186|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  1.60k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  1.60k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 1.60k, False: 0]
  ------------------
19030|  1.60k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  1.60k|        }
19032|  3.32k|        return true;
19033|  3.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIjLb0EEEbRT_:
18739|  5.76k|    {
18740|       |        // read in the original format
18741|       |
18742|  5.76k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  5.76k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 63, False: 5.70k]
  |  |  ------------------
  ------------------
18743|     63|        {
18744|     63|            return false;
18745|     63|        }
18746|  5.70k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 5.58k, False: 126]
  |  Branch (18746:34): [Folded, False: 5.58k]
  |  Branch (18746:57): [True: 0, False: 5.58k]
  ------------------
18747|  5.58k|        {
18748|  5.58k|            byte_swap(result);
18749|  5.58k|        }
18750|  5.70k|        return true;
18751|  5.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIjEEbRT_PKc:
18667|  5.76k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  5.76k|        auto new_chars_read = ia.get_elements(&dest);
18671|  5.76k|        chars_read += new_chars_read;
18672|  5.76k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  5.76k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 189, False: 5.58k]
  |  |  ------------------
  ------------------
18673|    189|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|    189|            ++chars_read;
18676|    189|            static_cast<void>(report_eof(context));
18677|    189|            return false;
18678|    189|        }
18679|  5.58k|        return true;
18680|  5.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIjEEmPT_m:
 8644|  5.76k|    {
 8645|  5.76k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  5.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIjEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  5.76k|    {
 8703|  5.76k|        const std::size_t wanted = count * sizeof(T);
 8704|  5.76k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  5.76k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  5.76k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  5.76k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 5.66k, False: 108]
  |  |  ------------------
  ------------------
 8707|  5.66k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  5.66k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  5.66k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 5.66k, False: 0]
  ------------------
 8712|  5.66k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  5.66k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 5.66k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  5.66k|            std::memcpy(dest, &*current, copied);
 8716|  5.66k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  5.66k|        }
 8718|  5.76k|        return copied;
 8719|  5.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIjEEvRT_:
18698|  5.58k|    {
18699|  5.58k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  5.58k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  16.7k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 11.1k, False: 5.58k]
  ------------------
18715|  11.1k|            {
18716|  11.1k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  11.1k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  5.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberImLb0EEEbRT_:
18739|  9.86k|    {
18740|       |        // read in the original format
18741|       |
18742|  9.86k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  9.86k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 80, False: 9.78k]
  |  |  ------------------
  ------------------
18743|     80|        {
18744|     80|            return false;
18745|     80|        }
18746|  9.78k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 9.62k, False: 160]
  |  Branch (18746:34): [Folded, False: 9.62k]
  |  Branch (18746:57): [True: 0, False: 9.62k]
  ------------------
18747|  9.62k|        {
18748|  9.62k|            byte_swap(result);
18749|  9.62k|        }
18750|  9.78k|        return true;
18751|  9.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_stringImEEbT_RSC_:
18910|  1.41k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.41k|        return get_bytes(len, "string", result);
18921|  1.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesImSC_EEbT_PKcRT0_:
18998|  1.41k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.41k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.85k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 822, False: 1.03k]
  ------------------
19003|    822|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    822|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 498, False: 324]
  ------------------
19007|    822|                                       ? static_cast<std::size_t>(len)
19008|    822|                                       : chunk_size;
19009|    822|            const std::size_t old_size = result.size();
19010|    822|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    822|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    822|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 822, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    822|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    822|            chars_read += bytes_read;
19018|    822|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    822|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 381, False: 441]
  |  |  ------------------
  ------------------
19019|    381|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    381|                result.resize(old_size + bytes_read);
19024|    381|                ++chars_read;
19025|    381|                current = char_traits<char_type>::eof();
19026|    381|                return unexpect_eof(context);
19027|    381|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    441|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    441|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 441, False: 0]
  ------------------
19030|    441|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    441|        }
19032|  1.03k|        return true;
19033|  1.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE16parse_cbor_valueEbNS1_18cbor_tag_handler_tERbSP_:
15503|   770k|    {
15504|   770k|        tag_pending = false;
15505|   770k|        item_read = false;
15506|       |
15507|   770k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (15507:17): [True: 512k, False: 257k]
  ------------------
15508|   770k|        {
15509|       |            // EOF
15510|  3.10k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (15510:13): [True: 3.10k, False: 767k]
  ------------------
15511|  3.10k|                return unexpect_eof("value");
15512|       |
15513|       |            // Integer 0x00..0x17 (0..23)
15514|  33.8k|            case 0x00:
  ------------------
  |  Branch (15514:13): [True: 33.8k, False: 736k]
  ------------------
15515|  37.9k|            case 0x01:
  ------------------
  |  Branch (15515:13): [True: 4.08k, False: 766k]
  ------------------
15516|  39.8k|            case 0x02:
  ------------------
  |  Branch (15516:13): [True: 1.92k, False: 768k]
  ------------------
15517|  41.3k|            case 0x03:
  ------------------
  |  Branch (15517:13): [True: 1.48k, False: 769k]
  ------------------
15518|  43.7k|            case 0x04:
  ------------------
  |  Branch (15518:13): [True: 2.39k, False: 768k]
  ------------------
15519|  45.8k|            case 0x05:
  ------------------
  |  Branch (15519:13): [True: 2.07k, False: 768k]
  ------------------
15520|  48.5k|            case 0x06:
  ------------------
  |  Branch (15520:13): [True: 2.67k, False: 768k]
  ------------------
15521|  49.6k|            case 0x07:
  ------------------
  |  Branch (15521:13): [True: 1.13k, False: 769k]
  ------------------
15522|  52.8k|            case 0x08:
  ------------------
  |  Branch (15522:13): [True: 3.22k, False: 767k]
  ------------------
15523|  54.5k|            case 0x09:
  ------------------
  |  Branch (15523:13): [True: 1.72k, False: 769k]
  ------------------
15524|  56.2k|            case 0x0A:
  ------------------
  |  Branch (15524:13): [True: 1.68k, False: 769k]
  ------------------
15525|  57.2k|            case 0x0B:
  ------------------
  |  Branch (15525:13): [True: 987, False: 769k]
  ------------------
15526|  58.3k|            case 0x0C:
  ------------------
  |  Branch (15526:13): [True: 1.11k, False: 769k]
  ------------------
15527|  59.6k|            case 0x0D:
  ------------------
  |  Branch (15527:13): [True: 1.26k, False: 769k]
  ------------------
15528|  61.3k|            case 0x0E:
  ------------------
  |  Branch (15528:13): [True: 1.67k, False: 769k]
  ------------------
15529|  62.7k|            case 0x0F:
  ------------------
  |  Branch (15529:13): [True: 1.43k, False: 769k]
  ------------------
15530|  65.0k|            case 0x10:
  ------------------
  |  Branch (15530:13): [True: 2.24k, False: 768k]
  ------------------
15531|  67.1k|            case 0x11:
  ------------------
  |  Branch (15531:13): [True: 2.09k, False: 768k]
  ------------------
15532|  68.3k|            case 0x12:
  ------------------
  |  Branch (15532:13): [True: 1.24k, False: 769k]
  ------------------
15533|  69.3k|            case 0x13:
  ------------------
  |  Branch (15533:13): [True: 1.02k, False: 769k]
  ------------------
15534|  71.2k|            case 0x14:
  ------------------
  |  Branch (15534:13): [True: 1.92k, False: 768k]
  ------------------
15535|  72.1k|            case 0x15:
  ------------------
  |  Branch (15535:13): [True: 862, False: 769k]
  ------------------
15536|  73.7k|            case 0x16:
  ------------------
  |  Branch (15536:13): [True: 1.57k, False: 769k]
  ------------------
15537|  75.1k|            case 0x17:
  ------------------
  |  Branch (15537:13): [True: 1.41k, False: 769k]
  ------------------
15538|  75.1k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
15539|       |
15540|  2.77k|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15540:13): [True: 2.77k, False: 767k]
  ------------------
15541|  2.77k|            {
15542|  2.77k|                std::uint8_t number{};
15543|  2.77k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15543:24): [True: 2.76k, False: 6]
  |  Branch (15543:46): [True: 2.76k, False: 0]
  ------------------
15544|  73.7k|            }
15545|       |
15546|  1.44k|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (15546:13): [True: 1.44k, False: 769k]
  ------------------
15547|  1.44k|            {
15548|  1.44k|                std::uint16_t number{};
15549|  1.44k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15549:24): [True: 1.43k, False: 12]
  |  Branch (15549:46): [True: 1.43k, False: 0]
  ------------------
15550|  73.7k|            }
15551|       |
15552|  1.25k|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (15552:13): [True: 1.25k, False: 769k]
  ------------------
15553|  1.25k|            {
15554|  1.25k|                std::uint32_t number{};
15555|  1.25k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15555:24): [True: 1.23k, False: 18]
  |  Branch (15555:46): [True: 1.23k, False: 0]
  ------------------
15556|  73.7k|            }
15557|       |
15558|  2.52k|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (15558:13): [True: 2.52k, False: 768k]
  ------------------
15559|  2.52k|            {
15560|  2.52k|                std::uint64_t number{};
15561|  2.52k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15561:24): [True: 2.49k, False: 36]
  |  Branch (15561:46): [True: 2.49k, False: 0]
  ------------------
15562|  73.7k|            }
15563|       |
15564|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
15565|  3.92k|            case 0x20:
  ------------------
  |  Branch (15565:13): [True: 3.92k, False: 766k]
  ------------------
15566|  6.18k|            case 0x21:
  ------------------
  |  Branch (15566:13): [True: 2.26k, False: 768k]
  ------------------
15567|  8.77k|            case 0x22:
  ------------------
  |  Branch (15567:13): [True: 2.58k, False: 768k]
  ------------------
15568|  11.1k|            case 0x23:
  ------------------
  |  Branch (15568:13): [True: 2.41k, False: 768k]
  ------------------
15569|  12.5k|            case 0x24:
  ------------------
  |  Branch (15569:13): [True: 1.35k, False: 769k]
  ------------------
15570|  15.1k|            case 0x25:
  ------------------
  |  Branch (15570:13): [True: 2.62k, False: 768k]
  ------------------
15571|  16.6k|            case 0x26:
  ------------------
  |  Branch (15571:13): [True: 1.47k, False: 769k]
  ------------------
15572|  19.2k|            case 0x27:
  ------------------
  |  Branch (15572:13): [True: 2.57k, False: 768k]
  ------------------
15573|  21.3k|            case 0x28:
  ------------------
  |  Branch (15573:13): [True: 2.17k, False: 768k]
  ------------------
15574|  23.4k|            case 0x29:
  ------------------
  |  Branch (15574:13): [True: 2.06k, False: 768k]
  ------------------
15575|  25.6k|            case 0x2A:
  ------------------
  |  Branch (15575:13): [True: 2.23k, False: 768k]
  ------------------
15576|  27.8k|            case 0x2B:
  ------------------
  |  Branch (15576:13): [True: 2.11k, False: 768k]
  ------------------
15577|  29.0k|            case 0x2C:
  ------------------
  |  Branch (15577:13): [True: 1.27k, False: 769k]
  ------------------
15578|  31.8k|            case 0x2D:
  ------------------
  |  Branch (15578:13): [True: 2.81k, False: 767k]
  ------------------
15579|  33.4k|            case 0x2E:
  ------------------
  |  Branch (15579:13): [True: 1.50k, False: 769k]
  ------------------
15580|  36.1k|            case 0x2F:
  ------------------
  |  Branch (15580:13): [True: 2.76k, False: 767k]
  ------------------
15581|  39.3k|            case 0x30:
  ------------------
  |  Branch (15581:13): [True: 3.14k, False: 767k]
  ------------------
15582|  41.1k|            case 0x31:
  ------------------
  |  Branch (15582:13): [True: 1.85k, False: 768k]
  ------------------
15583|  43.1k|            case 0x32:
  ------------------
  |  Branch (15583:13): [True: 1.94k, False: 768k]
  ------------------
15584|  44.4k|            case 0x33:
  ------------------
  |  Branch (15584:13): [True: 1.38k, False: 769k]
  ------------------
15585|  46.4k|            case 0x34:
  ------------------
  |  Branch (15585:13): [True: 1.98k, False: 768k]
  ------------------
15586|  47.7k|            case 0x35:
  ------------------
  |  Branch (15586:13): [True: 1.23k, False: 769k]
  ------------------
15587|  49.1k|            case 0x36:
  ------------------
  |  Branch (15587:13): [True: 1.47k, False: 769k]
  ------------------
15588|  50.8k|            case 0x37:
  ------------------
  |  Branch (15588:13): [True: 1.67k, False: 769k]
  ------------------
15589|  50.8k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
15590|       |
15591|  1.76k|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15591:13): [True: 1.76k, False: 768k]
  ------------------
15592|  1.76k|                return get_cbor_negative_integer<std::uint8_t>();
15593|       |
15594|  1.88k|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (15594:13): [True: 1.88k, False: 768k]
  ------------------
15595|  1.88k|                return get_cbor_negative_integer<std::uint16_t>();
15596|       |
15597|  1.30k|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (15597:13): [True: 1.30k, False: 769k]
  ------------------
15598|  1.30k|                return get_cbor_negative_integer<std::uint32_t>();
15599|       |
15600|  3.08k|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (15600:13): [True: 3.08k, False: 767k]
  ------------------
15601|  3.08k|                return get_cbor_negative_integer<std::uint64_t>();
15602|       |
15603|       |            // Binary data (0x00..0x17 bytes follow)
15604|  76.3k|            case 0x40:
  ------------------
  |  Branch (15604:13): [True: 76.3k, False: 694k]
  ------------------
15605|  81.6k|            case 0x41:
  ------------------
  |  Branch (15605:13): [True: 5.27k, False: 765k]
  ------------------
15606|  82.9k|            case 0x42:
  ------------------
  |  Branch (15606:13): [True: 1.25k, False: 769k]
  ------------------
15607|  83.5k|            case 0x43:
  ------------------
  |  Branch (15607:13): [True: 575, False: 770k]
  ------------------
15608|  83.9k|            case 0x44:
  ------------------
  |  Branch (15608:13): [True: 425, False: 770k]
  ------------------
15609|  84.5k|            case 0x45:
  ------------------
  |  Branch (15609:13): [True: 655, False: 770k]
  ------------------
15610|  85.0k|            case 0x46:
  ------------------
  |  Branch (15610:13): [True: 490, False: 770k]
  ------------------
15611|  85.4k|            case 0x47:
  ------------------
  |  Branch (15611:13): [True: 395, False: 770k]
  ------------------
15612|  86.0k|            case 0x48:
  ------------------
  |  Branch (15612:13): [True: 542, False: 770k]
  ------------------
15613|  86.3k|            case 0x49:
  ------------------
  |  Branch (15613:13): [True: 351, False: 770k]
  ------------------
15614|  86.7k|            case 0x4A:
  ------------------
  |  Branch (15614:13): [True: 369, False: 770k]
  ------------------
15615|  87.1k|            case 0x4B:
  ------------------
  |  Branch (15615:13): [True: 396, False: 770k]
  ------------------
15616|  87.5k|            case 0x4C:
  ------------------
  |  Branch (15616:13): [True: 407, False: 770k]
  ------------------
15617|  87.7k|            case 0x4D:
  ------------------
  |  Branch (15617:13): [True: 246, False: 770k]
  ------------------
15618|  88.0k|            case 0x4E:
  ------------------
  |  Branch (15618:13): [True: 229, False: 770k]
  ------------------
15619|  88.1k|            case 0x4F:
  ------------------
  |  Branch (15619:13): [True: 158, False: 770k]
  ------------------
15620|  88.4k|            case 0x50:
  ------------------
  |  Branch (15620:13): [True: 255, False: 770k]
  ------------------
15621|  88.5k|            case 0x51:
  ------------------
  |  Branch (15621:13): [True: 170, False: 770k]
  ------------------
15622|  88.7k|            case 0x52:
  ------------------
  |  Branch (15622:13): [True: 168, False: 770k]
  ------------------
15623|  88.9k|            case 0x53:
  ------------------
  |  Branch (15623:13): [True: 172, False: 770k]
  ------------------
15624|  89.0k|            case 0x54:
  ------------------
  |  Branch (15624:13): [True: 142, False: 770k]
  ------------------
15625|  89.2k|            case 0x55:
  ------------------
  |  Branch (15625:13): [True: 153, False: 770k]
  ------------------
15626|  89.4k|            case 0x56:
  ------------------
  |  Branch (15626:13): [True: 175, False: 770k]
  ------------------
15627|  89.6k|            case 0x57:
  ------------------
  |  Branch (15627:13): [True: 208, False: 770k]
  ------------------
15628|  92.3k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15628:13): [True: 2.74k, False: 768k]
  ------------------
15629|  94.2k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15629:13): [True: 1.89k, False: 768k]
  ------------------
15630|  95.5k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15630:13): [True: 1.33k, False: 769k]
  ------------------
15631|  96.8k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15631:13): [True: 1.26k, False: 769k]
  ------------------
15632|  99.0k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (15632:13): [True: 2.15k, False: 768k]
  ------------------
15633|  99.0k|            {
15634|  99.0k|                binary_t b;
15635|  99.0k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15635:24): [True: 97.4k, False: 1.59k]
  |  Branch (15635:46): [True: 97.4k, False: 0]
  ------------------
15636|  96.8k|            }
15637|       |
15638|       |            // UTF-8 string (0x00..0x17 bytes follow)
15639|  20.1k|            case 0x60:
  ------------------
  |  Branch (15639:13): [True: 20.1k, False: 750k]
  ------------------
15640|  24.8k|            case 0x61:
  ------------------
  |  Branch (15640:13): [True: 4.70k, False: 766k]
  ------------------
15641|  26.3k|            case 0x62:
  ------------------
  |  Branch (15641:13): [True: 1.58k, False: 769k]
  ------------------
15642|  27.4k|            case 0x63:
  ------------------
  |  Branch (15642:13): [True: 1.01k, False: 769k]
  ------------------
15643|  28.2k|            case 0x64:
  ------------------
  |  Branch (15643:13): [True: 848, False: 769k]
  ------------------
15644|  29.6k|            case 0x65:
  ------------------
  |  Branch (15644:13): [True: 1.36k, False: 769k]
  ------------------
15645|  30.6k|            case 0x66:
  ------------------
  |  Branch (15645:13): [True: 974, False: 769k]
  ------------------
15646|  31.1k|            case 0x67:
  ------------------
  |  Branch (15646:13): [True: 545, False: 770k]
  ------------------
15647|  32.0k|            case 0x68:
  ------------------
  |  Branch (15647:13): [True: 926, False: 769k]
  ------------------
15648|  32.4k|            case 0x69:
  ------------------
  |  Branch (15648:13): [True: 380, False: 770k]
  ------------------
15649|  32.9k|            case 0x6A:
  ------------------
  |  Branch (15649:13): [True: 509, False: 770k]
  ------------------
15650|  33.3k|            case 0x6B:
  ------------------
  |  Branch (15650:13): [True: 433, False: 770k]
  ------------------
15651|  34.1k|            case 0x6C:
  ------------------
  |  Branch (15651:13): [True: 734, False: 770k]
  ------------------
15652|  34.5k|            case 0x6D:
  ------------------
  |  Branch (15652:13): [True: 387, False: 770k]
  ------------------
15653|  34.7k|            case 0x6E:
  ------------------
  |  Branch (15653:13): [True: 205, False: 770k]
  ------------------
15654|  35.0k|            case 0x6F:
  ------------------
  |  Branch (15654:13): [True: 298, False: 770k]
  ------------------
15655|  35.3k|            case 0x70:
  ------------------
  |  Branch (15655:13): [True: 286, False: 770k]
  ------------------
15656|  35.5k|            case 0x71:
  ------------------
  |  Branch (15656:13): [True: 247, False: 770k]
  ------------------
15657|  35.8k|            case 0x72:
  ------------------
  |  Branch (15657:13): [True: 309, False: 770k]
  ------------------
15658|  36.1k|            case 0x73:
  ------------------
  |  Branch (15658:13): [True: 241, False: 770k]
  ------------------
15659|  36.4k|            case 0x74:
  ------------------
  |  Branch (15659:13): [True: 395, False: 770k]
  ------------------
15660|  36.7k|            case 0x75:
  ------------------
  |  Branch (15660:13): [True: 224, False: 770k]
  ------------------
15661|  36.9k|            case 0x76:
  ------------------
  |  Branch (15661:13): [True: 222, False: 770k]
  ------------------
15662|  37.3k|            case 0x77:
  ------------------
  |  Branch (15662:13): [True: 451, False: 770k]
  ------------------
15663|  40.8k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15663:13): [True: 3.50k, False: 767k]
  ------------------
15664|  43.8k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15664:13): [True: 2.99k, False: 767k]
  ------------------
15665|  44.6k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15665:13): [True: 765, False: 769k]
  ------------------
15666|  46.0k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15666:13): [True: 1.34k, False: 769k]
  ------------------
15667|  47.6k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15667:13): [True: 1.61k, False: 769k]
  ------------------
15668|  47.6k|            {
15669|  47.6k|                string_t s;
15670|  47.6k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (15670:24): [True: 46.0k, False: 1.57k]
  |  Branch (15670:46): [True: 46.0k, False: 0]
  ------------------
15671|  46.0k|            }
15672|       |
15673|       |            // array (0x00..0x17 data items follow)
15674|  9.70k|            case 0x80:
  ------------------
  |  Branch (15674:13): [True: 9.70k, False: 761k]
  ------------------
15675|   303k|            case 0x81:
  ------------------
  |  Branch (15675:13): [True: 293k, False: 477k]
  ------------------
15676|   305k|            case 0x82:
  ------------------
  |  Branch (15676:13): [True: 1.78k, False: 768k]
  ------------------
15677|   306k|            case 0x83:
  ------------------
  |  Branch (15677:13): [True: 1.73k, False: 769k]
  ------------------
15678|   307k|            case 0x84:
  ------------------
  |  Branch (15678:13): [True: 1.08k, False: 769k]
  ------------------
15679|   308k|            case 0x85:
  ------------------
  |  Branch (15679:13): [True: 850, False: 769k]
  ------------------
15680|   309k|            case 0x86:
  ------------------
  |  Branch (15680:13): [True: 1.12k, False: 769k]
  ------------------
15681|   311k|            case 0x87:
  ------------------
  |  Branch (15681:13): [True: 1.42k, False: 769k]
  ------------------
15682|   312k|            case 0x88:
  ------------------
  |  Branch (15682:13): [True: 1.11k, False: 769k]
  ------------------
15683|   313k|            case 0x89:
  ------------------
  |  Branch (15683:13): [True: 814, False: 769k]
  ------------------
15684|   314k|            case 0x8A:
  ------------------
  |  Branch (15684:13): [True: 1.10k, False: 769k]
  ------------------
15685|   315k|            case 0x8B:
  ------------------
  |  Branch (15685:13): [True: 965, False: 769k]
  ------------------
15686|   316k|            case 0x8C:
  ------------------
  |  Branch (15686:13): [True: 781, False: 769k]
  ------------------
15687|   317k|            case 0x8D:
  ------------------
  |  Branch (15687:13): [True: 978, False: 769k]
  ------------------
15688|   318k|            case 0x8E:
  ------------------
  |  Branch (15688:13): [True: 1.04k, False: 769k]
  ------------------
15689|   319k|            case 0x8F:
  ------------------
  |  Branch (15689:13): [True: 1.14k, False: 769k]
  ------------------
15690|   320k|            case 0x90:
  ------------------
  |  Branch (15690:13): [True: 1.52k, False: 769k]
  ------------------
15691|   322k|            case 0x91:
  ------------------
  |  Branch (15691:13): [True: 1.47k, False: 769k]
  ------------------
15692|   323k|            case 0x92:
  ------------------
  |  Branch (15692:13): [True: 1.06k, False: 769k]
  ------------------
15693|   324k|            case 0x93:
  ------------------
  |  Branch (15693:13): [True: 1.08k, False: 769k]
  ------------------
15694|   325k|            case 0x94:
  ------------------
  |  Branch (15694:13): [True: 867, False: 769k]
  ------------------
15695|   326k|            case 0x95:
  ------------------
  |  Branch (15695:13): [True: 782, False: 769k]
  ------------------
15696|   327k|            case 0x96:
  ------------------
  |  Branch (15696:13): [True: 1.47k, False: 769k]
  ------------------
15697|   329k|            case 0x97:
  ------------------
  |  Branch (15697:13): [True: 1.71k, False: 769k]
  ------------------
15698|   329k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15699|       |
15700|  1.57k|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15700:13): [True: 1.57k, False: 769k]
  ------------------
15701|  3.10k|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15701:13): [True: 1.53k, False: 769k]
  ------------------
15702|  3.89k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15702:13): [True: 789, False: 769k]
  ------------------
15703|  4.71k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15703:13): [True: 822, False: 769k]
  ------------------
15704|  4.71k|            {
15705|  4.71k|                std::uint64_t len{};
15706|  4.71k|                std::size_t size{};
15707|  4.71k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "array") && enter_array(size);
  ------------------
  |  Branch (15707:24): [True: 4.59k, False: 117]
  |  Branch (15707:50): [True: 4.59k, False: 3]
  |  Branch (15707:97): [True: 4.22k, False: 375]
  ------------------
15708|  3.89k|            }
15709|       |
15710|  20.5k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (15710:13): [True: 20.5k, False: 750k]
  ------------------
15711|  20.5k|                return enter_array(detail::unknown_size());
15712|       |
15713|       |            // map (0x00..0x17 pairs of data items follow)
15714|  7.23k|            case 0xA0:
  ------------------
  |  Branch (15714:13): [True: 7.23k, False: 763k]
  ------------------
15715|  40.3k|            case 0xA1:
  ------------------
  |  Branch (15715:13): [True: 33.1k, False: 737k]
  ------------------
15716|  45.9k|            case 0xA2:
  ------------------
  |  Branch (15716:13): [True: 5.62k, False: 765k]
  ------------------
15717|  47.7k|            case 0xA3:
  ------------------
  |  Branch (15717:13): [True: 1.73k, False: 769k]
  ------------------
15718|  48.5k|            case 0xA4:
  ------------------
  |  Branch (15718:13): [True: 865, False: 769k]
  ------------------
15719|  49.2k|            case 0xA5:
  ------------------
  |  Branch (15719:13): [True: 712, False: 770k]
  ------------------
15720|  50.4k|            case 0xA6:
  ------------------
  |  Branch (15720:13): [True: 1.15k, False: 769k]
  ------------------
15721|  51.2k|            case 0xA7:
  ------------------
  |  Branch (15721:13): [True: 796, False: 769k]
  ------------------
15722|  52.8k|            case 0xA8:
  ------------------
  |  Branch (15722:13): [True: 1.65k, False: 769k]
  ------------------
15723|  53.6k|            case 0xA9:
  ------------------
  |  Branch (15723:13): [True: 763, False: 769k]
  ------------------
15724|  54.6k|            case 0xAA:
  ------------------
  |  Branch (15724:13): [True: 1.04k, False: 769k]
  ------------------
15725|  55.5k|            case 0xAB:
  ------------------
  |  Branch (15725:13): [True: 820, False: 769k]
  ------------------
15726|  56.1k|            case 0xAC:
  ------------------
  |  Branch (15726:13): [True: 645, False: 770k]
  ------------------
15727|  56.8k|            case 0xAD:
  ------------------
  |  Branch (15727:13): [True: 679, False: 770k]
  ------------------
15728|  57.5k|            case 0xAE:
  ------------------
  |  Branch (15728:13): [True: 691, False: 770k]
  ------------------
15729|  58.6k|            case 0xAF:
  ------------------
  |  Branch (15729:13): [True: 1.09k, False: 769k]
  ------------------
15730|  59.5k|            case 0xB0:
  ------------------
  |  Branch (15730:13): [True: 892, False: 769k]
  ------------------
15731|  61.0k|            case 0xB1:
  ------------------
  |  Branch (15731:13): [True: 1.55k, False: 769k]
  ------------------
15732|  61.7k|            case 0xB2:
  ------------------
  |  Branch (15732:13): [True: 716, False: 770k]
  ------------------
15733|  62.5k|            case 0xB3:
  ------------------
  |  Branch (15733:13): [True: 726, False: 770k]
  ------------------
15734|  63.5k|            case 0xB4:
  ------------------
  |  Branch (15734:13): [True: 1.04k, False: 769k]
  ------------------
15735|  63.8k|            case 0xB5:
  ------------------
  |  Branch (15735:13): [True: 336, False: 770k]
  ------------------
15736|  64.8k|            case 0xB6:
  ------------------
  |  Branch (15736:13): [True: 917, False: 769k]
  ------------------
15737|  65.9k|            case 0xB7:
  ------------------
  |  Branch (15737:13): [True: 1.13k, False: 769k]
  ------------------
15738|  65.9k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15739|       |
15740|  1.06k|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15740:13): [True: 1.06k, False: 769k]
  ------------------
15741|  2.50k|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15741:13): [True: 1.44k, False: 769k]
  ------------------
15742|  2.82k|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15742:13): [True: 318, False: 770k]
  ------------------
15743|  3.52k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15743:13): [True: 696, False: 770k]
  ------------------
15744|  3.52k|            {
15745|  3.52k|                std::uint64_t len{};
15746|  3.52k|                std::size_t size{};
15747|  3.52k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (15747:24): [True: 3.40k, False: 117]
  |  Branch (15747:50): [True: 3.40k, False: 3]
  |  Branch (15747:95): [True: 3.12k, False: 279]
  ------------------
15748|  2.82k|            }
15749|       |
15750|  3.17k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (15750:13): [True: 3.17k, False: 767k]
  ------------------
15751|  3.17k|                return enter_object(detail::unknown_size());
15752|       |
15753|      6|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (15753:13): [True: 6, False: 770k]
  ------------------
15754|     12|            case 0xC1:
  ------------------
  |  Branch (15754:13): [True: 6, False: 770k]
  ------------------
15755|     15|            case 0xC2:
  ------------------
  |  Branch (15755:13): [True: 3, False: 770k]
  ------------------
15756|     18|            case 0xC3:
  ------------------
  |  Branch (15756:13): [True: 3, False: 770k]
  ------------------
15757|     27|            case 0xC4:
  ------------------
  |  Branch (15757:13): [True: 9, False: 770k]
  ------------------
15758|     30|            case 0xC5:
  ------------------
  |  Branch (15758:13): [True: 3, False: 770k]
  ------------------
15759|     36|            case 0xC6:
  ------------------
  |  Branch (15759:13): [True: 6, False: 770k]
  ------------------
15760|     39|            case 0xC7:
  ------------------
  |  Branch (15760:13): [True: 3, False: 770k]
  ------------------
15761|     42|            case 0xC8:
  ------------------
  |  Branch (15761:13): [True: 3, False: 770k]
  ------------------
15762|     48|            case 0xC9:
  ------------------
  |  Branch (15762:13): [True: 6, False: 770k]
  ------------------
15763|     51|            case 0xCA:
  ------------------
  |  Branch (15763:13): [True: 3, False: 770k]
  ------------------
15764|     57|            case 0xCB:
  ------------------
  |  Branch (15764:13): [True: 6, False: 770k]
  ------------------
15765|     60|            case 0xCC:
  ------------------
  |  Branch (15765:13): [True: 3, False: 770k]
  ------------------
15766|     63|            case 0xCD:
  ------------------
  |  Branch (15766:13): [True: 3, False: 770k]
  ------------------
15767|     66|            case 0xCE:
  ------------------
  |  Branch (15767:13): [True: 3, False: 770k]
  ------------------
15768|     69|            case 0xCF:
  ------------------
  |  Branch (15768:13): [True: 3, False: 770k]
  ------------------
15769|     75|            case 0xD0:
  ------------------
  |  Branch (15769:13): [True: 6, False: 770k]
  ------------------
15770|     78|            case 0xD1:
  ------------------
  |  Branch (15770:13): [True: 3, False: 770k]
  ------------------
15771|     81|            case 0xD2:
  ------------------
  |  Branch (15771:13): [True: 3, False: 770k]
  ------------------
15772|     84|            case 0xD3:
  ------------------
  |  Branch (15772:13): [True: 3, False: 770k]
  ------------------
15773|     93|            case 0xD4:
  ------------------
  |  Branch (15773:13): [True: 9, False: 770k]
  ------------------
15774|     99|            case 0xD5:
  ------------------
  |  Branch (15774:13): [True: 6, False: 770k]
  ------------------
15775|    105|            case 0xD6:
  ------------------
  |  Branch (15775:13): [True: 6, False: 770k]
  ------------------
15776|    111|            case 0xD7:
  ------------------
  |  Branch (15776:13): [True: 6, False: 770k]
  ------------------
15777|    111|            {
15778|    111|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (15778:21): [True: 111, False: 0]
  ------------------
15779|    111|                {
15780|    111|                    return unexpected_byte("invalid byte", "value");
15781|    111|                }
15782|       |
15783|       |                // ignore and store: the tag value is already in the head, so
15784|       |                // there is nothing left to read here; the tagged value that
15785|       |                // follows is read by the loop in parse_cbor_internal() rather
15786|       |                // than by recursing here
15787|      0|                tag_pending = true;
15788|      0|                return true;
15789|    111|            }
15790|       |
15791|      6|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (15791:13): [True: 6, False: 770k]
  ------------------
15792|      9|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (15792:13): [True: 3, False: 770k]
  ------------------
15793|     12|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (15793:13): [True: 3, False: 770k]
  ------------------
15794|     15|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (15794:13): [True: 3, False: 770k]
  ------------------
15795|     15|            {
15796|     15|                switch (tag_handler)
15797|     15|                {
15798|     15|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (15798:21): [True: 15, False: 0]
  ------------------
15799|     15|                    {
15800|     15|                        return unexpected_byte("invalid byte", "value");
15801|      0|                    }
15802|       |
15803|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (15803:21): [True: 0, False: 15]
  ------------------
15804|      0|                    {
15805|       |                        // ignore the tag's binary subtype argument
15806|      0|                        std::uint64_t subtype_to_ignore{};
15807|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (15807:29): [True: 0, False: 0]
  ------------------
15808|      0|                        {
15809|      0|                            return false;
15810|      0|                        }
15811|       |                        // the tagged value follows; it is read by the loop in
15812|       |                        // parse_cbor_internal() rather than by recursing here
15813|      0|                        tag_pending = true;
15814|      0|                        return true;
15815|      0|                    }
15816|       |
15817|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (15817:21): [True: 0, False: 15]
  ------------------
15818|      0|                    {
15819|       |                        // use binary subtype and store in a binary container
15820|      0|                        std::uint64_t subtype{};
15821|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (15821:29): [True: 0, False: 0]
  ------------------
15822|      0|                        {
15823|      0|                            return false;
15824|      0|                        }
15825|      0|                        binary_t b;
15826|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
15827|       |
15828|      0|                        get();
15829|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
15830|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (15830:30): [True: 0, False: 0]
  |  Branch (15830:49): [True: 0, False: 0]
  |  Branch (15830:69): [True: 0, False: 0]
  ------------------
15831|      0|                        {
15832|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15832:36): [True: 0, False: 0]
  |  Branch (15832:58): [True: 0, False: 0]
  ------------------
15833|      0|                        }
15834|       |
15835|       |                        // not a byte string: the tagged value, whose first byte
15836|       |                        // was just read, is read by the caller like for ignore
15837|      0|                        tag_pending = true;
15838|      0|                        item_read = true;
15839|      0|                        return true;
15840|      0|                    }
15841|       |
15842|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (15842:21): [True: 0, False: 15]
  ------------------
15843|      0|                        JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15843:25): [Folded, False: 0]
  ------------------
15844|      0|                        return false;        // LCOV_EXCL_LINE
15845|     15|                }
15846|     15|            }
15847|       |
15848|  6.95k|            case 0xF4: // false
  ------------------
  |  Branch (15848:13): [True: 6.95k, False: 763k]
  ------------------
15849|  6.95k|                return sax->boolean(false);
15850|       |
15851|  6.07k|            case 0xF5: // true
  ------------------
  |  Branch (15851:13): [True: 6.07k, False: 764k]
  ------------------
15852|  6.07k|                return sax->boolean(true);
15853|       |
15854|  9.09k|            case 0xF6: // null
  ------------------
  |  Branch (15854:13): [True: 9.09k, False: 761k]
  ------------------
15855|  9.09k|                return sax->null();
15856|       |
15857|  18.4k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (15857:13): [True: 18.4k, False: 752k]
  ------------------
15858|  18.4k|                return get_half_float(false);
15859|       |
15860|  6.25k|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (15860:13): [True: 6.25k, False: 764k]
  ------------------
15861|  6.25k|            {
15862|  6.25k|                float number{};
15863|  6.25k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15863:24): [True: 6.21k, False: 33]
  |  Branch (15863:46): [True: 6.21k, False: 0]
  ------------------
15864|     15|            }
15865|       |
15866|  4.62k|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (15866:13): [True: 4.62k, False: 766k]
  ------------------
15867|  4.62k|            {
15868|  4.62k|                double number{};
15869|  4.62k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15869:24): [True: 4.58k, False: 39]
  |  Branch (15869:46): [True: 4.58k, False: 0]
  ------------------
15870|     15|            }
15871|       |
15872|    204|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (15872:13): [True: 204, False: 770k]
  ------------------
15873|    204|            {
15874|    204|                return unexpected_byte("invalid byte", "value");
15875|     15|            }
15876|   770k|        }
15877|   770k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedIhEEbT_:
18799|  2.76k|    {
18800|  2.76k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  2.76k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.76k, False: 0]
  |  |  ------------------
  ------------------
18801|  2.76k|        {
18802|  2.76k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  2.76k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  2.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImhEEbT0_:
 5101|  5.01k|{
 5102|  5.01k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  5.01k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImhLb0EvE4testEh:
 5085|  5.01k|    {
 5086|  5.01k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  5.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImhLb0ELb0EE4testEh:
 5039|  5.01k|    {
 5040|  5.01k|        using CommonType = typename std::common_type<OfType, T>::type;
 5041|  5.01k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5042|  5.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedItEEbT_:
18799|  1.43k|    {
18800|  1.43k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  1.43k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.43k, False: 0]
  |  |  ------------------
  ------------------
18801|  1.43k|        {
18802|  1.43k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  1.43k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  1.43k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImtEEbT0_:
 5101|  2.53k|{
 5102|  2.53k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  2.53k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImtLb0EvE4testEt:
 5085|  2.53k|    {
 5086|  2.53k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  2.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImtLb0ELb0EE4testEt:
 5039|  2.53k|    {
 5040|  2.53k|        using CommonType = typename std::common_type<OfType, T>::type;
 5041|  2.53k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5042|  2.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedIjEEbT_:
18799|  1.23k|    {
18800|  1.23k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  1.23k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.23k, False: 0]
  |  |  ------------------
  ------------------
18801|  1.23k|        {
18802|  1.23k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  1.23k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  1.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImjEEbT0_:
 5101|  2.19k|{
 5102|  2.19k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  2.19k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImjLb0EvE4testEj:
 5085|  2.19k|    {
 5086|  2.19k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  2.19k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImjLb0ELb0EE4testEj:
 5039|  2.19k|    {
 5040|  2.19k|        using CommonType = typename std::common_type<OfType, T>::type;
 5041|  2.19k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5042|  2.19k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE25get_cbor_negative_integerIhEEbv:
15467|  1.76k|    {
15468|  1.76k|        NumberType number{};
15469|  1.76k|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|  1.76k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4, False: 1.76k]
  |  |  ------------------
  ------------------
15470|      4|        {
15471|      4|            return false;
15472|      4|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|  1.76k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.76k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.75k, False: 8]
  |  |  ------------------
  ------------------
15478|  1.75k|        {
15479|  1.75k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|  1.75k|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      8|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|  1.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIlhEEbT0_:
 5101|  3.15k|{
 5102|  3.15k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  3.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IlhLb1EvE4testEh:
 5094|  3.15k|    {
 5095|  3.15k|        return true;
 5096|  3.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castIllTnNSt3__19enable_ifIXsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 4994|  13.2k|{
 4995|  13.2k|    return value;
 4996|  13.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE25get_cbor_negative_integerItEEbv:
15467|  1.88k|    {
15468|  1.88k|        NumberType number{};
15469|  1.88k|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|  1.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6, False: 1.88k]
  |  |  ------------------
  ------------------
15470|      6|        {
15471|      6|            return false;
15472|      6|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|  1.88k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.88k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.86k, False: 12]
  |  |  ------------------
  ------------------
15478|  1.86k|        {
15479|  1.86k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|  1.86k|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|     12|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|  1.88k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIltEEbT0_:
 5101|  3.30k|{
 5102|  3.30k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  3.30k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IltLb1EvE4testEt:
 5094|  3.30k|    {
 5095|  3.30k|        return true;
 5096|  3.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE25get_cbor_negative_integerIjEEbv:
15467|  1.30k|    {
15468|  1.30k|        NumberType number{};
15469|  1.30k|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|  1.30k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 8, False: 1.29k]
  |  |  ------------------
  ------------------
15470|      8|        {
15471|      8|            return false;
15472|      8|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|  1.29k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.29k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.28k, False: 16]
  |  |  ------------------
  ------------------
15478|  1.28k|        {
15479|  1.28k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|  1.28k|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|     16|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|  1.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIljEEbT0_:
 5101|  2.26k|{
 5102|  2.26k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  2.26k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IljLb1EvE4testEj:
 5094|  2.26k|    {
 5095|  2.26k|        return true;
 5096|  2.26k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE25get_cbor_negative_integerImEEbv:
15467|  3.08k|    {
15468|  3.08k|        NumberType number{};
15469|  3.08k|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|  3.08k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 15, False: 3.07k]
  |  |  ------------------
  ------------------
15470|     15|        {
15471|     15|            return false;
15472|     15|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|  3.07k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  3.07k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.55k, False: 522]
  |  |  ------------------
  ------------------
15478|  2.55k|        {
15479|  2.55k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|  2.55k|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|    522|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|  3.07k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIlmEEbT0_:
 5101|  5.47k|{
 5102|  5.47k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  5.47k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IlmLb0EvE4testEm:
 5085|  5.47k|    {
 5086|  5.47k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  5.47k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2IlmLb1ELb0EE4testEm:
 5049|  5.47k|    {
 5050|  5.47k|        using CommonType = typename std::common_type<OfType, T>::type;
 5051|  5.47k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5052|  5.47k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15get_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
16193|  99.0k|    {
16194|       |        // read chunks iteratively, but reject a second indefinite-length
16195|       |        // level as required by RFC 8949, Section 3.2.3
16196|  99.0k|        bool indefinite = false;
16197|       |
16198|   106k|        while (true)
  ------------------
  |  Branch (16198:16): [True: 104k, Folded]
  ------------------
16199|   104k|        {
16200|   104k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1667|   104k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 104k]
  |  |  ------------------
  ------------------
16201|     19|            {
16202|     19|                return false;
16203|     19|            }
16204|       |
16205|   104k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (16205:17): [True: 2.16k, False: 102k]
  ------------------
16206|  2.16k|            {
16207|  2.16k|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|  2.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 9, False: 2.15k]
  |  |  ------------------
  ------------------
16208|      9|                {
16209|      9|                    return cbor_indefinite_string_error("binary array", "binary");
16210|      9|                }
16211|  2.15k|                indefinite = true;
16212|  2.15k|                get();
16213|  2.15k|                continue;
16214|  2.16k|            }
16215|       |
16216|       |            // a break marker closes the indefinite-length string; outside
16217|       |            // of one it falls through to the error below
16218|   102k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16218:17): [True: 5.91k, False: 96.8k]
  |  Branch (16218:31): [True: 1.84k, False: 4.07k]
  ------------------
16219|  1.84k|            {
16220|  1.84k|                return true;
16221|  1.84k|            }
16222|       |
16223|   100k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1667|   100k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 509, False: 100k]
  |  |  ------------------
  ------------------
16224|    509|            {
16225|    509|                return false;
16226|    509|            }
16227|       |
16228|   100k|            if (!indefinite)
  ------------------
  |  Branch (16228:17): [True: 95.5k, False: 4.89k]
  ------------------
16229|  95.5k|            {
16230|  95.5k|                return true;
16231|  95.5k|            }
16232|       |
16233|  4.89k|            get();
16234|  4.89k|        }
16235|  99.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
16114|   100k|    {
16115|   100k|        switch (current)
16116|   100k|        {
16117|       |            // Binary data (0x00..0x17 bytes follow)
16118|  78.5k|            case 0x40:
  ------------------
  |  Branch (16118:13): [True: 78.5k, False: 22.3k]
  ------------------
16119|  84.8k|            case 0x41:
  ------------------
  |  Branch (16119:13): [True: 6.34k, False: 94.5k]
  ------------------
16120|  86.3k|            case 0x42:
  ------------------
  |  Branch (16120:13): [True: 1.45k, False: 99.4k]
  ------------------
16121|  86.9k|            case 0x43:
  ------------------
  |  Branch (16121:13): [True: 611, False: 100k]
  ------------------
16122|  87.3k|            case 0x44:
  ------------------
  |  Branch (16122:13): [True: 437, False: 100k]
  ------------------
16123|  88.0k|            case 0x45:
  ------------------
  |  Branch (16123:13): [True: 685, False: 100k]
  ------------------
16124|  88.5k|            case 0x46:
  ------------------
  |  Branch (16124:13): [True: 496, False: 100k]
  ------------------
16125|  88.9k|            case 0x47:
  ------------------
  |  Branch (16125:13): [True: 413, False: 100k]
  ------------------
16126|  89.5k|            case 0x48:
  ------------------
  |  Branch (16126:13): [True: 548, False: 100k]
  ------------------
16127|  89.8k|            case 0x49:
  ------------------
  |  Branch (16127:13): [True: 354, False: 100k]
  ------------------
16128|  90.2k|            case 0x4A:
  ------------------
  |  Branch (16128:13): [True: 372, False: 100k]
  ------------------
16129|  90.6k|            case 0x4B:
  ------------------
  |  Branch (16129:13): [True: 420, False: 100k]
  ------------------
16130|  91.0k|            case 0x4C:
  ------------------
  |  Branch (16130:13): [True: 407, False: 100k]
  ------------------
16131|  91.3k|            case 0x4D:
  ------------------
  |  Branch (16131:13): [True: 252, False: 100k]
  ------------------
16132|  91.5k|            case 0x4E:
  ------------------
  |  Branch (16132:13): [True: 229, False: 100k]
  ------------------
16133|  91.7k|            case 0x4F:
  ------------------
  |  Branch (16133:13): [True: 185, False: 100k]
  ------------------
16134|  92.0k|            case 0x50:
  ------------------
  |  Branch (16134:13): [True: 273, False: 100k]
  ------------------
16135|  92.1k|            case 0x51:
  ------------------
  |  Branch (16135:13): [True: 176, False: 100k]
  ------------------
16136|  92.3k|            case 0x52:
  ------------------
  |  Branch (16136:13): [True: 186, False: 100k]
  ------------------
16137|  92.5k|            case 0x53:
  ------------------
  |  Branch (16137:13): [True: 175, False: 100k]
  ------------------
16138|  92.6k|            case 0x54:
  ------------------
  |  Branch (16138:13): [True: 148, False: 100k]
  ------------------
16139|  92.8k|            case 0x55:
  ------------------
  |  Branch (16139:13): [True: 180, False: 100k]
  ------------------
16140|  93.0k|            case 0x56:
  ------------------
  |  Branch (16140:13): [True: 178, False: 100k]
  ------------------
16141|  93.2k|            case 0x57:
  ------------------
  |  Branch (16141:13): [True: 211, False: 100k]
  ------------------
16142|  93.2k|            {
16143|  93.2k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
16144|  93.0k|            }
16145|       |
16146|  2.91k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (16146:13): [True: 2.91k, False: 98.0k]
  ------------------
16147|  2.91k|            {
16148|  2.91k|                std::uint8_t len{};
16149|  2.91k|                return get_number(len) &&
  ------------------
  |  Branch (16149:24): [True: 2.89k, False: 21]
  ------------------
16150|  2.89k|                       get_binary(len, result);
  ------------------
  |  Branch (16150:24): [True: 2.80k, False: 84]
  ------------------
16151|  93.0k|            }
16152|       |
16153|  2.05k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (16153:13): [True: 2.05k, False: 98.8k]
  ------------------
16154|  2.05k|            {
16155|  2.05k|                std::uint16_t len{};
16156|  2.05k|                return get_number(len) &&
  ------------------
  |  Branch (16156:24): [True: 2.03k, False: 27]
  ------------------
16157|  2.03k|                       get_binary(len, result);
  ------------------
  |  Branch (16157:24): [True: 1.86k, False: 168]
  ------------------
16158|  93.0k|            }
16159|       |
16160|  1.33k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (16160:13): [True: 1.33k, False: 99.5k]
  ------------------
16161|  1.33k|            {
16162|  1.33k|                std::uint32_t len{};
16163|  1.33k|                return get_number(len) &&
  ------------------
  |  Branch (16163:24): [True: 1.29k, False: 42]
  ------------------
16164|  1.29k|                       get_binary(len, result);
  ------------------
  |  Branch (16164:24): [True: 1.09k, False: 195]
  ------------------
16165|  93.0k|            }
16166|       |
16167|  1.26k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (16167:13): [True: 1.26k, False: 99.6k]
  ------------------
16168|  1.26k|            {
16169|  1.26k|                std::uint64_t len{};
16170|  1.26k|                return get_number(len) &&
  ------------------
  |  Branch (16170:24): [True: 1.22k, False: 42]
  ------------------
16171|  1.22k|                       get_binary(len, result);
  ------------------
  |  Branch (16171:24): [True: 858, False: 366]
  ------------------
16172|  93.0k|            }
16173|       |
16174|     93|            default:
  ------------------
  |  Branch (16174:13): [True: 93, False: 100k]
  ------------------
16175|     93|            {
16176|     93|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (16176:133): [True: 93, False: 0]
  ------------------
16177|  93.0k|            }
16178|   100k|        }
16179|   100k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  94.5k|    {
18973|  94.5k|        return get_bytes(len, "binary", result);
18974|  94.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  94.5k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  94.5k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|   108k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 14.9k, False: 93.8k]
  ------------------
19003|  14.9k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  14.9k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 14.8k, False: 126]
  ------------------
19007|  14.9k|                                       ? static_cast<std::size_t>(len)
19008|  14.9k|                                       : chunk_size;
19009|  14.9k|            const std::size_t old_size = result.size();
19010|  14.9k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  14.9k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  14.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 14.9k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  14.9k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  14.9k|            chars_read += bytes_read;
19018|  14.9k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  14.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 684, False: 14.2k]
  |  |  ------------------
  ------------------
19019|    684|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    684|                result.resize(old_size + bytes_read);
19024|    684|                ++chars_read;
19025|    684|                current = char_traits<char_type>::eof();
19026|    684|                return unexpect_eof(context);
19027|    684|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  14.2k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  14.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 14.2k, False: 0]
  ------------------
19030|  14.2k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  14.2k|        }
19032|  93.8k|        return true;
19033|  94.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  2.89k|    {
18973|  2.89k|        return get_bytes(len, "binary", result);
18974|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  2.89k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  2.89k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  5.01k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 2.20k, False: 2.80k]
  ------------------
19003|  2.20k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  2.20k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 2.20k, False: 0]
  ------------------
19007|  2.20k|                                       ? static_cast<std::size_t>(len)
19008|  2.20k|                                       : chunk_size;
19009|  2.20k|            const std::size_t old_size = result.size();
19010|  2.20k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  2.20k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  2.20k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 2.20k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  2.20k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  2.20k|            chars_read += bytes_read;
19018|  2.20k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  2.20k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 84, False: 2.12k]
  |  |  ------------------
  ------------------
19019|     84|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     84|                result.resize(old_size + bytes_read);
19024|     84|                ++chars_read;
19025|     84|                current = char_traits<char_type>::eof();
19026|     84|                return unexpect_eof(context);
19027|     84|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  2.12k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  2.12k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 2.12k, False: 0]
  ------------------
19030|  2.12k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  2.12k|        }
19032|  2.80k|        return true;
19033|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  2.03k|    {
18973|  2.03k|        return get_bytes(len, "binary", result);
18974|  2.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  2.03k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  2.03k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  3.27k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.40k, False: 1.86k]
  ------------------
19003|  1.40k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.40k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.34k, False: 60]
  ------------------
19007|  1.40k|                                       ? static_cast<std::size_t>(len)
19008|  1.40k|                                       : chunk_size;
19009|  1.40k|            const std::size_t old_size = result.size();
19010|  1.40k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.40k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.40k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.40k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.40k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.40k|            chars_read += bytes_read;
19018|  1.40k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.40k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 168, False: 1.24k]
  |  |  ------------------
  ------------------
19019|    168|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    168|                result.resize(old_size + bytes_read);
19024|    168|                ++chars_read;
19025|    168|                current = char_traits<char_type>::eof();
19026|    168|                return unexpect_eof(context);
19027|    168|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  1.24k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  1.24k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 1.24k, False: 0]
  ------------------
19030|  1.24k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  1.24k|        }
19032|  1.86k|        return true;
19033|  2.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_binaryImEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.22k|    {
18973|  1.22k|        return get_bytes(len, "binary", result);
18974|  1.22k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.22k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.22k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.47k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 618, False: 858]
  ------------------
19003|    618|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    618|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 318, False: 300]
  ------------------
19007|    618|                                       ? static_cast<std::size_t>(len)
19008|    618|                                       : chunk_size;
19009|    618|            const std::size_t old_size = result.size();
19010|    618|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    618|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    618|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 618, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    618|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    618|            chars_read += bytes_read;
19018|    618|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    618|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 366, False: 252]
  |  |  ------------------
  ------------------
19019|    366|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    366|                result.resize(old_size + bytes_read);
19024|    366|                ++chars_read;
19025|    366|                current = char_traits<char_type>::eof();
19026|    366|                return unexpect_eof(context);
19027|    366|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    252|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    252|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 252, False: 0]
  ------------------
19030|    252|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    252|        }
19032|    858|        return true;
19033|  1.22k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE11enter_arrayEmm:
15094|   354k|    {
15095|   354k|        return enter_container(/*is_object*/false, len, type_marker);
15096|   354k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castImjTnNSt3__19enable_ifIXntsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 4988|   710k|{
 4989|   710k|    return static_cast<T>(value);
 4990|   710k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17get_cbor_argumentERm:
16251|  8.23k|    {
16252|  8.23k|        switch (current & 0x1F)
16253|  8.23k|        {
16254|  2.63k|            case 0x18: // 1 byte
  ------------------
  |  Branch (16254:13): [True: 2.63k, False: 5.60k]
  ------------------
16255|  2.63k|            {
16256|  2.63k|                std::uint8_t n{};
16257|  2.63k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|  2.63k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 13, False: 2.62k]
  |  |  ------------------
  ------------------
16258|     13|                {
16259|     13|                    return false;
16260|     13|                }
16261|  2.62k|                value = n;
16262|  2.62k|                return true;
16263|  2.63k|            }
16264|       |
16265|  2.97k|            case 0x19: // 2 bytes
  ------------------
  |  Branch (16265:13): [True: 2.97k, False: 5.25k]
  ------------------
16266|  2.97k|            {
16267|  2.97k|                std::uint16_t n{};
16268|  2.97k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|  2.97k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 2.95k]
  |  |  ------------------
  ------------------
16269|     19|                {
16270|     19|                    return false;
16271|     19|                }
16272|  2.95k|                value = n;
16273|  2.95k|                return true;
16274|  2.97k|            }
16275|       |
16276|  1.10k|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (16276:13): [True: 1.10k, False: 7.12k]
  ------------------
16277|  1.10k|            {
16278|  1.10k|                std::uint32_t n{};
16279|  1.10k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|  1.10k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 1.08k]
  |  |  ------------------
  ------------------
16280|     23|                {
16281|     23|                    return false;
16282|     23|                }
16283|  1.08k|                value = n;
16284|  1.08k|                return true;
16285|  1.10k|            }
16286|       |
16287|  1.51k|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (16287:13): [True: 1.51k, False: 6.71k]
  ------------------
16288|  1.51k|            {
16289|  1.51k|                std::uint64_t n{};
16290|  1.51k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|  1.51k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 1.49k]
  |  |  ------------------
  ------------------
16291|     23|                {
16292|     23|                    return false;
16293|     23|                }
16294|  1.49k|                value = n;
16295|  1.49k|                return true;
16296|  1.51k|            }
16297|       |
16298|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (16298:13): [True: 0, False: 8.23k]
  ------------------
16299|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (16299:17): [Folded, False: 0]
  ------------------
16300|      0|                return false;        // LCOV_EXCL_LINE
16301|  8.23k|        }
16302|  8.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE23get_cbor_container_sizeEmRmPKc:
16319|  8.00k|    {
16320|  8.00k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1667|  16.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6, False: 7.99k]
  |  |  |  Branch (1667:94): [True: 0, False: 8.00k]
  |  |  |  Branch (1667:94): [True: 6, False: 7.99k]
  |  |  ------------------
  ------------------
16321|      6|        {
16322|      6|            return container_size_error(context);
16323|      6|        }
16324|  7.99k|        result = conditional_static_cast<std::size_t>(len);
16325|  7.99k|        return true;
16326|  8.00k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE20container_size_errorEPKc:
19074|      6|    {
19075|      6|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
19076|      6|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
19077|      6|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA11_KcRPSA_RA6_SA_EEET_DpOT0_:
 5318|     12|{
 5319|     12|    OutStringType str;
 5320|     12|    str.reserve(concat_length(args...));
 5321|     12|    concat_into(str, std::forward<Args>(args)...);
 5322|     12|    return str;
 5323|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA6_cEEEmS4_DpRKT_:
 5222|     12|{
 5223|     12|    return ::strlen(cstr) + concat_length(rest...);
 5224|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA6_cEEEmPKcDpRKT_:
 5222|     12|{
 5223|     12|    return ::strlen(cstr) + concat_length(rest...);
 5224|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA11_KcJRPSA_RA6_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|     12|{
 5282|     12|    out.append(std::forward<Arg>(arg));
 5283|     12|    concat_into(out, std::forward<Args>(rest)...);
 5284|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA6_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|     12|{
 5282|     12|    out.append(std::forward<Arg>(arg));
 5283|     12|    concat_into(out, std::forward<Args>(rest)...);
 5284|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA6_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|     12|{
 5282|     12|    out.append(std::forward<Arg>(arg));
 5283|     12|    concat_into(out, std::forward<Args>(rest)...);
 5284|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12enter_objectEmm:
15100|  72.5k|    {
15101|  72.5k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  72.5k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15unexpected_byteEPKcSP_:
19130|    330|    {
19131|    330|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    330|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRPKcRA5_SA_S9_EEET_DpOT0_:
 5318|    660|{
 5319|    660|    OutStringType str;
 5320|    660|    str.reserve(concat_length(args...));
 5321|    660|    concat_into(str, std::forward<Args>(args)...);
 5322|    660|    return str;
 5323|    660|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA5_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|    660|{
 5223|    660|    return ::strlen(cstr) + concat_length(rest...);
 5224|    660|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA5_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|    660|{
 5282|    660|    out.append(std::forward<Arg>(arg));
 5283|    660|    concat_into(out, std::forward<Args>(rest)...);
 5284|    660|}
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castImmTnNSt3__19enable_ifIXsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 4994|  43.3k|{
 4995|  43.3k|    return value;
 4996|  43.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE14get_half_floatEb:
18845|  18.4k|    {
18846|  18.4k|        const auto byte1_raw = get();
18847|  18.4k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  18.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4, False: 18.4k]
  |  |  ------------------
  ------------------
18848|      4|        {
18849|      4|            return false;
18850|      4|        }
18851|  18.4k|        const auto byte2_raw = get();
18852|  18.4k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  18.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12, False: 18.4k]
  |  |  ------------------
  ------------------
18853|     12|        {
18854|     12|            return false;
18855|     12|        }
18856|       |
18857|  18.4k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
18858|  18.4k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
18859|       |
18860|       |        // Code from RFC 8949, Appendix D, Figure 3:
18861|       |        // As half-precision floating-point numbers were only added
18862|       |        // to IEEE 754 in 2008, today's programming platforms often
18863|       |        // still only have limited support for them. It is very
18864|       |        // easy to include at least decoding support for them even
18865|       |        // without such support. An example of a small decoder for
18866|       |        // half-precision floating-point numbers in the C language
18867|       |        // is shown in Fig. 3.
18868|  18.4k|        const auto half = little_endian
  ------------------
  |  Branch (18868:27): [True: 0, False: 18.4k]
  ------------------
18869|  18.4k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
18870|  18.4k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
18871|  18.4k|        const double val = [&half]
18872|  18.4k|        {
18873|  18.4k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  18.4k|            const unsigned int mant = half & 0x3FFu;
18875|  18.4k|            JSON_ASSERT(exp <= 31);
18876|  18.4k|            JSON_ASSERT(mant <= 1023);
18877|  18.4k|            switch (exp)
18878|  18.4k|            {
18879|  18.4k|                case 0:
18880|  18.4k|                    return std::ldexp(mant, -24);
18881|  18.4k|                case 31:
18882|  18.4k|                    return (mant == 0)
18883|  18.4k|                    ? std::numeric_limits<double>::infinity()
18884|  18.4k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  18.4k|                default:
18886|  18.4k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  18.4k|            }
18888|  18.4k|        }();
18889|  18.4k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (18889:34): [True: 10.9k, False: 7.43k]
  ------------------
18890|  18.4k|                                 ? static_cast<number_float_t>(-val)
18891|  18.4k|                                 : static_cast<number_float_t>(val), "");
18892|  18.4k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE14get_half_floatEbENKUlvE_clEv:
18872|  18.3k|        {
18873|  18.3k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  18.3k|            const unsigned int mant = half & 0x3FFu;
18875|  18.3k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2591|  18.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18875:13): [True: 18.3k, False: 0]
  ------------------
18876|  18.3k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2591|  18.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18876:13): [True: 18.3k, False: 0]
  ------------------
18877|  18.3k|            switch (exp)
18878|  18.3k|            {
18879|  3.78k|                case 0:
  ------------------
  |  Branch (18879:17): [True: 3.78k, False: 14.5k]
  ------------------
18880|  3.78k|                    return std::ldexp(mant, -24);
18881|  4.50k|                case 31:
  ------------------
  |  Branch (18881:17): [True: 4.50k, False: 13.8k]
  ------------------
18882|  4.50k|                    return (mant == 0)
  ------------------
  |  Branch (18882:28): [True: 2.36k, False: 2.14k]
  ------------------
18883|  4.50k|                    ? std::numeric_limits<double>::infinity()
18884|  4.50k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  10.0k|                default:
  ------------------
  |  Branch (18885:17): [True: 10.0k, False: 8.29k]
  ------------------
18886|  10.0k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  18.3k|            }
18888|  18.3k|        }();
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIfLb0EEEbRT_:
18739|  6.25k|    {
18740|       |        // read in the original format
18741|       |
18742|  6.25k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  6.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 6.24k]
  |  |  ------------------
  ------------------
18743|     11|        {
18744|     11|            return false;
18745|     11|        }
18746|  6.24k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 6.21k, False: 22]
  |  Branch (18746:34): [Folded, False: 6.21k]
  |  Branch (18746:57): [True: 0, False: 6.21k]
  ------------------
18747|  6.21k|        {
18748|  6.21k|            byte_swap(result);
18749|  6.21k|        }
18750|  6.24k|        return true;
18751|  6.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIfEEbRT_PKc:
18667|  6.25k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  6.25k|        auto new_chars_read = ia.get_elements(&dest);
18671|  6.25k|        chars_read += new_chars_read;
18672|  6.25k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  6.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 33, False: 6.21k]
  |  |  ------------------
  ------------------
18673|     33|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     33|            ++chars_read;
18676|     33|            static_cast<void>(report_eof(context));
18677|     33|            return false;
18678|     33|        }
18679|  6.21k|        return true;
18680|  6.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIfEEmPT_m:
 8644|  6.25k|    {
 8645|  6.25k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  6.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIfEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  6.25k|    {
 8703|  6.25k|        const std::size_t wanted = count * sizeof(T);
 8704|  6.25k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  6.25k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  6.25k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  6.25k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 6.24k, False: 9]
  |  |  ------------------
  ------------------
 8707|  6.24k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  6.24k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  6.24k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 6.24k, False: 0]
  ------------------
 8712|  6.24k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  6.24k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 6.24k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  6.24k|            std::memcpy(dest, &*current, copied);
 8716|  6.24k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  6.24k|        }
 8718|  6.25k|        return copied;
 8719|  6.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIfEEvRT_:
18698|  6.21k|    {
18699|  6.21k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  6.21k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  18.6k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 12.4k, False: 6.21k]
  ------------------
18715|  12.4k|            {
18716|  12.4k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  12.4k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  6.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10emit_floatIfEEbT_:
18825|  6.21k|    {
18826|  6.21k|        const auto result = static_cast<number_float_t>(number);
18827|  6.21k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  12.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 6.21k]
  |  |  |  Branch (1667:94): [True: 6.20k, False: 15]
  |  |  |  Branch (1667:94): [True: 0, False: 6.20k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  6.21k|        return sax->number_float(result, "");
18832|  6.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIdLb0EEEbRT_:
18739|  4.62k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.62k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.62k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 13, False: 4.61k]
  |  |  ------------------
  ------------------
18743|     13|        {
18744|     13|            return false;
18745|     13|        }
18746|  4.61k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.58k, False: 26]
  |  Branch (18746:34): [Folded, False: 4.58k]
  |  Branch (18746:57): [True: 0, False: 4.58k]
  ------------------
18747|  4.58k|        {
18748|  4.58k|            byte_swap(result);
18749|  4.58k|        }
18750|  4.61k|        return true;
18751|  4.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE3getEv:
18652|   935k|    {
18653|   935k|        ++chars_read;
18654|   935k|        return current = ia.get_character();
18655|   935k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E13get_characterEv:
 8590|   935k|    {
 8591|   935k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   935k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 916k, False: 18.5k]
  |  |  ------------------
  ------------------
 8592|   916k|        {
 8593|   916k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   916k|            std::advance(current, 1);
 8595|   916k|            return result;
 8596|   916k|        }
 8597|       |
 8598|  18.5k|        ++eof_reads;
 8599|  18.5k|        return char_traits<char_type>::eof();
 8600|   935k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE11to_int_typeEh:
 4289|  1.17M|    {
 4290|  1.17M|        return static_cast<int_type>(c);
 4291|  1.17M|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSS_:
19116|  1.19k|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|  1.19k|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|  1.19k|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 348, False: 846]
  ------------------
19120|  1.19k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRKS9_RPKcRA16_SC_S9_EEET_DpOT0_:
 5318|  1.69k|{
 5319|  1.69k|    OutStringType str;
 5320|  1.69k|    str.reserve(concat_length(args...));
 5321|  1.69k|    concat_into(str, std::forward<Args>(args)...);
 5322|  1.69k|    return str;
 5323|  1.69k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJPKcA16_cS9_EEEmRKT_DpRKT0_:
 5228|  1.69k|{
 5229|  1.69k|    return str.size() + concat_length(rest...);
 5230|  1.69k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRPKcRA16_SC_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  1.69k|{
 5282|  1.69k|    out.append(std::forward<Arg>(arg));
 5283|  1.69k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  1.69k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ENS0_6detail7value_tE:
32384|   776k|        : m_data(stored_kind(v))
32385|   776k|    {
32386|   776k|        assert_invariant();
32387|   776k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11stored_kindENS0_6detail7value_tE:
30581|   776k|    {
30582|   776k|        return (std::is_same<number_integer_t, number_unsigned_t>::value && t == value_t::number_unsigned) ? value_t::number_integer : t;
  ------------------
  |  Branch (30582:17): [Folded, False: 776k]
  |  Branch (30582:77): [True: 0, False: 0]
  ------------------
30583|   776k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2ENS0_6detail7value_tE:
36324|   776k|            : m_type(v), m_value(v)
36325|   776k|        {
36326|   776k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ENS0_6detail7value_tE:
30664|   776k|        {
30665|   776k|            switch (t)
30666|   776k|            {
30667|   135k|                case value_t::object:
  ------------------
  |  Branch (30667:17): [True: 135k, False: 640k]
  ------------------
30668|   773k|                case value_t::array:
  ------------------
  |  Branch (30668:17): [True: 637k, False: 138k]
  ------------------
30669|   773k|                case value_t::string:
  ------------------
  |  Branch (30669:17): [True: 0, False: 776k]
  ------------------
30670|   773k|                case value_t::binary:
  ------------------
  |  Branch (30670:17): [True: 0, False: 776k]
  ------------------
30671|   773k|                {
30672|       |                    // allocating: kept out of line, so the scalar cases below inline
30673|   773k|                    init_owned(t);
30674|   773k|                    break;
30675|   773k|                }
30676|       |
30677|      0|                case value_t::boolean:
  ------------------
  |  Branch (30677:17): [True: 0, False: 776k]
  ------------------
30678|      0|                {
30679|      0|                    boolean = static_cast<boolean_t>(false);
30680|      0|                    break;
30681|   773k|                }
30682|       |
30683|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30683:17): [True: 0, False: 776k]
  ------------------
30684|      0|                {
30685|      0|                    number_integer = static_cast<number_integer_t>(0);
30686|      0|                    break;
30687|   773k|                }
30688|       |
30689|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30689:17): [True: 0, False: 776k]
  ------------------
30690|      0|                {
30691|      0|                    number_unsigned = static_cast<number_unsigned_t>(0);
30692|      0|                    break;
30693|   773k|                }
30694|       |
30695|      0|                case value_t::number_float:
  ------------------
  |  Branch (30695:17): [True: 0, False: 776k]
  ------------------
30696|      0|                {
30697|      0|                    number_float = static_cast<number_float_t>(0.0);
30698|      0|                    break;
30699|   773k|                }
30700|       |
30701|      0|                case value_t::null:
  ------------------
  |  Branch (30701:17): [True: 0, False: 776k]
  ------------------
30702|      0|                {
30703|      0|                    object = nullptr;  // silence warning, see #821
30704|      0|                    break;
30705|   773k|                }
30706|       |
30707|  3.12k|                case value_t::discarded:
  ------------------
  |  Branch (30707:17): [True: 3.12k, False: 773k]
  ------------------
30708|  3.12k|                default:
  ------------------
  |  Branch (30708:17): [True: 0, False: 776k]
  ------------------
30709|  3.12k|                {
30710|  3.12k|                    object = nullptr;  // silence warning, see #821
30711|  3.12k|                    if (JSON_HEDLEY_UNLIKELY(t == value_t::null))
  ------------------
  |  | 1667|  3.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.12k]
  |  |  ------------------
  ------------------
30712|      0|                    {
30713|      0|                        detail::throw_literal<other_error>(detail::exception_id::internal_error, "961c151d2e87f2686a955a9be24d316f1362bf21 3.12.0", nullptr); // LCOV_EXCL_LINE
30714|      0|                    }
30715|  3.12k|                    break;
30716|  3.12k|                }
30717|   776k|            }
30718|   776k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10init_ownedENS0_6detail7value_tE:
30722|   773k|        {
30723|   773k|            switch (t)
30724|   773k|            {
30725|   135k|                case value_t::object:
  ------------------
  |  Branch (30725:17): [True: 135k, False: 637k]
  ------------------
30726|   135k|                    object = create<object_t>();
30727|   135k|                    break;
30728|   637k|                case value_t::array:
  ------------------
  |  Branch (30728:17): [True: 637k, False: 135k]
  ------------------
30729|   637k|                    array = create<array_t>();
30730|   637k|                    break;
30731|      0|                case value_t::string:
  ------------------
  |  Branch (30731:17): [True: 0, False: 773k]
  ------------------
30732|      0|                    string = create<string_t>("");
30733|      0|                    break;
30734|      0|                case value_t::binary:
  ------------------
  |  Branch (30734:17): [True: 0, False: 773k]
  ------------------
30735|      0|                    binary = create<binary_t>();
30736|      0|                    break;
30737|      0|                case value_t::null:
  ------------------
  |  Branch (30737:17): [True: 0, False: 773k]
  ------------------
30738|      0|                case value_t::boolean:
  ------------------
  |  Branch (30738:17): [True: 0, False: 773k]
  ------------------
30739|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30739:17): [True: 0, False: 773k]
  ------------------
30740|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30740:17): [True: 0, False: 773k]
  ------------------
30741|      0|                case value_t::number_float:
  ------------------
  |  Branch (30741:17): [True: 0, False: 773k]
  ------------------
30742|      0|                case value_t::discarded:
  ------------------
  |  Branch (30742:17): [True: 0, False: 773k]
  ------------------
30743|      0|                default:
  ------------------
  |  Branch (30743:17): [True: 0, False: 773k]
  ------------------
30744|      0|                    break;
30745|   773k|            }
30746|   773k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEJEEEPT_DpOT0_:
30589|   135k|    {
30590|   135k|        AllocatorType<T> alloc;
30591|   135k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|   135k|        auto deleter = [&](T * obj)
30594|   135k|        {
30595|   135k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|   135k|        };
30597|   135k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|   135k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|   135k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|   135k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 135k, False: 0]
  ------------------
30600|   135k|        return obj.release();
30601|   135k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS4_ISE_NS8_ISE_EEEEJEEEPT_DpOT0_:
30589|   637k|    {
30590|   637k|        AllocatorType<T> alloc;
30591|   637k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|   637k|        auto deleter = [&](T * obj)
30594|   637k|        {
30595|   637k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|   637k|        };
30597|   637k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|   637k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|   637k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|   637k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 637k, False: 0]
  ------------------
30600|   637k|        return obj.release();
30601|   637k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEaSESE_:
32797|   218k|    {
32798|       |        // check that the passed value is valid
32799|   218k|        other.assert_invariant();
32800|       |
32801|   218k|        using std::swap;
32802|   218k|        swap(m_data.m_type, other.m_data.m_type);
32803|   218k|        swap(m_data.m_value, other.m_data.m_value);
32804|       |
32805|       |#if JSON_DIAGNOSTIC_POSITIONS
32806|       |        swap(start_position, other.start_position);
32807|       |        swap(end_position, other.end_position);
32808|       |#endif
32809|       |
32810|   218k|        json_base_class_t::operator=(std::move(other));
32811|       |
32812|   218k|        set_parents();
32813|   218k|        assert_invariant();
32814|   218k|        return *this;
32815|   218k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEED2Ev:
14954|  23.7k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEED2Ev:
13881|  23.7k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__16vectorIhNS3_9allocatorIhEEEETnNS3_9enable_ifIXsr28is_contiguous_byte_containerIT_EE5valueEiE4typeELi0EEEDTcl13input_adaptercldtfp_4dataEplcldtfp_4dataEcldtfp_4sizeEEERKS9_:
 9104|  17.0k|{
 9105|  17.0k|    return input_adapter(container.data(), container.data() + container.size());
 9106|  17.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterIPKhS4_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES6_S7_:
 9007|  23.7k|{
 9008|  23.7k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  23.7k|    return factory_type::create(first, last);
 9010|  23.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryIPKhS4_vE6createES4_S4_:
 8935|  23.7k|    {
 8936|  23.7k|        return adapter_type(std::move(first), std::move(last));
 8937|  23.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_EC2ES4_S4_:
 8586|  23.7k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  23.7k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE7to_cborERKSE_NS0_6detail15error_handler_tE:
36408|  7.20k|    {
36409|  7.20k|        std::vector<std::uint8_t> result;
36410|  7.20k|        result.reserve(detail::binary_reserve_hint(j));
36411|  7.20k|        vector_writer(result, error_handler).write_cbor(j);
36412|  7.20k|        return result;
36413|  7.20k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19binary_reserve_hintINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
23013|  7.20k|{
23014|  7.20k|    if (j.is_array())
  ------------------
  |  Branch (23014:9): [True: 3.86k, False: 3.34k]
  ------------------
23015|  3.86k|    {
23016|  3.86k|        return j.size() + 1;
23017|  3.86k|    }
23018|       |
23019|  3.34k|    if (j.is_object())
  ------------------
  |  Branch (23019:9): [True: 354, False: 2.98k]
  ------------------
23020|    354|    {
23021|    354|        return (j.size() * 2) + 1;
23022|    354|    }
23023|       |
23024|  2.98k|    return 0;
23025|  3.34k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13vector_writerIhEENS0_6detail13binary_writerISE_T_NSG_18output_vector_sinkISI_NS8_ISI_EEEEEERNS4_ISI_SK_EENSG_15error_handler_tE:
30271|  7.20k|    {
30272|  7.20k|        return vector_binary_writer<CharType>(::nlohmann::detail::output_vector_sink<CharType>(v), error_handler);
30273|  7.20k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2ERNS3_6vectorIhS5_EE:
22740|  7.20k|        : v(vec)
22741|  7.20k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEEC2ESI_NS1_15error_handler_tE:
23055|  7.20k|        : oa(std::move(sink)), error_handler(error_handler_)
23056|  7.20k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10write_cborERKSG_m:
23129|   205k|    {
23130|   205k|        if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()) && (j.is_array() || j.is_object()))
  ------------------
  |  | 1667|   411k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 5.21k, False: 200k]
  |  |  ------------------
  ------------------
  |  Branch (23130:72): [True: 1.31k, False: 3.90k]
  |  Branch (23130:88): [True: 1.84k, False: 2.05k]
  ------------------
23131|  3.15k|        {
23132|  3.15k|            write_cbor_iterative(j);
23133|  3.15k|            return;
23134|  3.15k|        }
23135|       |
23136|   202k|        switch (j.type())
23137|   202k|        {
23138|  1.92k|            case value_t::null:
  ------------------
  |  Branch (23138:13): [True: 1.92k, False: 200k]
  ------------------
23139|  1.92k|            {
23140|  1.92k|                oa.write_character(to_char_type(0xF6));
23141|  1.92k|                break;
23142|      0|            }
23143|       |
23144|  3.10k|            case value_t::boolean:
  ------------------
  |  Branch (23144:13): [True: 3.10k, False: 199k]
  ------------------
23145|  3.10k|            {
23146|  3.10k|                oa.write_character(j.m_data.m_value.boolean
  ------------------
  |  Branch (23146:36): [True: 1.31k, False: 1.79k]
  ------------------
23147|  3.10k|                                   ? to_char_type(0xF5)
23148|  3.10k|                                   : to_char_type(0xF4));
23149|  3.10k|                break;
23150|      0|            }
23151|       |
23152|  16.3k|            case value_t::number_integer:
  ------------------
  |  Branch (23152:13): [True: 16.3k, False: 186k]
  ------------------
23153|  16.3k|            {
23154|  16.3k|                if (j.m_data.m_value.number_integer >= 0)
  ------------------
  |  Branch (23154:21): [True: 0, False: 16.3k]
  ------------------
23155|      0|                {
23156|       |                    // CBOR does not differentiate between positive signed
23157|       |                    // integers and unsigned integers
23158|      0|                    write_cbor_head(0x00, static_cast<std::uint64_t>(j.m_data.m_value.number_integer));
23159|      0|                }
23160|  16.3k|                else
23161|  16.3k|                {
23162|       |                    // a negative integer n is encoded as -1 - n
23163|  16.3k|                    write_cbor_head(0x20, static_cast<std::uint64_t>(-1 - j.m_data.m_value.number_integer));
23164|  16.3k|                }
23165|  16.3k|                break;
23166|      0|            }
23167|       |
23168|  27.9k|            case value_t::number_unsigned:
  ------------------
  |  Branch (23168:13): [True: 27.9k, False: 174k]
  ------------------
23169|  27.9k|            {
23170|  27.9k|                write_cbor_head(0x00, conditional_static_cast<std::uint64_t>(j.m_data.m_value.number_unsigned));
23171|  27.9k|                break;
23172|      0|            }
23173|       |
23174|  12.5k|            case value_t::number_float:
  ------------------
  |  Branch (23174:13): [True: 12.5k, False: 190k]
  ------------------
23175|  12.5k|            {
23176|  12.5k|                if (std::isnan(j.m_data.m_value.number_float))
  ------------------
  |  Branch (23176:21): [True: 832, False: 11.7k]
  ------------------
23177|    832|                {
23178|       |                    // NaN is 0xf97e00 in CBOR
23179|    832|                    oa.write_character(to_char_type(0xF9));
23180|    832|                    oa.write_character(to_char_type(0x7E));
23181|    832|                    oa.write_character(to_char_type(0x00));
23182|    832|                }
23183|  11.7k|                else if (std::isinf(j.m_data.m_value.number_float))
  ------------------
  |  Branch (23183:26): [True: 896, False: 10.8k]
  ------------------
23184|    896|                {
23185|       |                    // Infinity is 0xf97c00, -Infinity is 0xf9fc00
23186|    896|                    oa.write_character(to_char_type(0xf9));
23187|    896|                    oa.write_character(j.m_data.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC));
  ------------------
  |  Branch (23187:40): [True: 78, False: 818]
  ------------------
23188|    896|                    oa.write_character(to_char_type(0x00));
23189|    896|                }
23190|  10.8k|                else
23191|  10.8k|                {
23192|  10.8k|                    write_compact_float(j.m_data.m_value.number_float, to_char_type(0xFA), to_char_type(0xFB));
23193|  10.8k|                }
23194|  12.5k|                break;
23195|      0|            }
23196|       |
23197|  12.4k|            case value_t::string:
  ------------------
  |  Branch (23197:13): [True: 12.4k, False: 190k]
  ------------------
23198|  12.4k|            {
23199|  12.4k|                write_cbor_string(*j.m_data.m_value.string, j);
23200|  12.4k|                break;
23201|      0|            }
23202|       |
23203|  81.7k|            case value_t::array:
  ------------------
  |  Branch (23203:13): [True: 81.7k, False: 120k]
  ------------------
23204|  81.7k|            {
23205|       |                // step 1: write control byte and the array size
23206|  81.7k|                write_cbor_head(0x80, j.m_data.m_value.array->size());
23207|       |
23208|  81.7k|                for (const auto& el : *j.m_data.m_value.array)
  ------------------
  |  Branch (23208:37): [True: 179k, False: 81.7k]
  ------------------
23209|   179k|                {
23210|   179k|                    write_cbor(el, depth + 1);
23211|   179k|                }
23212|  81.7k|                break;
23213|      0|            }
23214|       |
23215|  39.6k|            case value_t::binary:
  ------------------
  |  Branch (23215:13): [True: 39.6k, False: 162k]
  ------------------
23216|  39.6k|            {
23217|  39.6k|                if (j.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (23217:21): [True: 0, False: 39.6k]
  ------------------
23218|      0|                {
23219|       |                    // The subtype is always written as a tag with a 0xD8..0xDB
23220|       |                    // head, never in the one-byte form 0xC0..0xD7 that CBOR
23221|       |                    // allows for tags 0..23 (so this is not write_cbor_head).
23222|       |                    // binary_reader with cbor_tag_handler_t::store only turns
23223|       |                    // 0xD8..0xDB into a subtype and ignores the one-byte tags,
23224|       |                    // so the shorter form would lose subtypes 0..23 on a round
23225|       |                    // trip.
23226|      0|                    if (j.m_data.m_value.binary->subtype() <= (std::numeric_limits<std::uint8_t>::max)())
  ------------------
  |  Branch (23226:25): [True: 0, False: 0]
  ------------------
23227|      0|                    {
23228|      0|                        write_number(static_cast<std::uint8_t>(0xd8));
23229|      0|                        write_number(static_cast<std::uint8_t>(j.m_data.m_value.binary->subtype()));
23230|      0|                    }
23231|      0|                    else if (j.m_data.m_value.binary->subtype() <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (23231:30): [True: 0, False: 0]
  ------------------
23232|      0|                    {
23233|      0|                        write_number(static_cast<std::uint8_t>(0xd9));
23234|      0|                        write_number(static_cast<std::uint16_t>(j.m_data.m_value.binary->subtype()));
23235|      0|                    }
23236|      0|                    else if (j.m_data.m_value.binary->subtype() <= (std::numeric_limits<std::uint32_t>::max)())
  ------------------
  |  Branch (23236:30): [True: 0, False: 0]
  ------------------
23237|      0|                    {
23238|      0|                        write_number(static_cast<std::uint8_t>(0xda));
23239|      0|                        write_number(static_cast<std::uint32_t>(j.m_data.m_value.binary->subtype()));
23240|      0|                    }
23241|      0|                    else
23242|      0|                    {
23243|      0|                        write_number(static_cast<std::uint8_t>(0xdb));
23244|      0|                        write_number(static_cast<std::uint64_t>(j.m_data.m_value.binary->subtype()));
23245|      0|                    }
23246|      0|                }
23247|       |
23248|       |                // step 1: write control byte and the binary array size
23249|  39.6k|                const auto N = j.m_data.m_value.binary->size();
23250|  39.6k|                write_cbor_head(0x40, N);
23251|       |
23252|       |                // step 2: write each element
23253|  39.6k|                oa.write_characters(
23254|  39.6k|                      reinterpret_cast<const CharType*>(j.m_data.m_value.binary->data()),
23255|  39.6k|                      N);
23256|       |
23257|  39.6k|                break;
23258|      0|            }
23259|       |
23260|  6.85k|            case value_t::object:
  ------------------
  |  Branch (23260:13): [True: 6.85k, False: 195k]
  ------------------
23261|  6.85k|            {
23262|       |                // step 1: write control byte and the object size
23263|  6.85k|                write_cbor_head(0xA0, j.m_data.m_value.object->size());
23264|       |
23265|  6.85k|                for (const auto& el : *j.m_data.m_value.object)
  ------------------
  |  Branch (23265:37): [True: 11.7k, False: 6.85k]
  ------------------
23266|  11.7k|                {
23267|       |                    // el.first is written directly (not via a temporary
23268|       |                    // basic_json), with the object as diagnostics context
23269|  11.7k|                    write_cbor_key(el.first, j);
23270|  11.7k|                    write_cbor(el.second, depth + 1);
23271|  11.7k|                }
23272|  6.85k|                break;
23273|      0|            }
23274|       |
23275|      0|            case value_t::discarded:
  ------------------
  |  Branch (23275:13): [True: 0, False: 202k]
  ------------------
23276|      0|            default:
  ------------------
  |  Branch (23276:13): [True: 0, False: 202k]
  ------------------
23277|      0|                throw_on_discarded(j, "CBOR");
23278|   202k|        }
23279|   202k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20write_cbor_iterativeERKSG_:
23897|  3.15k|    {
23898|       |        // only a container with elements is ever pushed; see write_cbor_value_or_push
23899|  3.15k|        std::vector<binary_container_frame> stack;
23900|  3.15k|        write_cbor_value_or_push(root, stack);
23901|       |
23902|   150k|        while (!stack.empty())
  ------------------
  |  Branch (23902:16): [True: 147k, False: 3.15k]
  ------------------
23903|   147k|        {
23904|   147k|            const binary_container_frame current = stack.back();
23905|       |
23906|   147k|            if (current.value->is_array())
  ------------------
  |  Branch (23906:17): [True: 123k, False: 23.8k]
  ------------------
23907|   123k|            {
23908|   123k|                const auto& array = *current.value->m_data.m_value.array;
23909|   123k|                if (current.array_it == array.cend())
  ------------------
  |  Branch (23909:21): [True: 59.3k, False: 64.5k]
  ------------------
23910|  59.3k|                {
23911|  59.3k|                    stack.pop_back();
23912|  59.3k|                    continue;
23913|  59.3k|                }
23914|       |
23915|       |                // read the child before pushing: entering it can move every frame
23916|  64.5k|                const BasicJsonType* child = &(*current.array_it);
23917|  64.5k|                ++stack.back().array_it;
23918|  64.5k|                write_cbor_value_or_push(*child, stack);
23919|  64.5k|            }
23920|  23.8k|            else
23921|  23.8k|            {
23922|  23.8k|                const auto& object = *current.value->m_data.m_value.object;
23923|  23.8k|                if (current.object_it == object.cend())
  ------------------
  |  Branch (23923:21): [True: 11.3k, False: 12.4k]
  ------------------
23924|  11.3k|                {
23925|  11.3k|                    stack.pop_back();
23926|  11.3k|                    continue;
23927|  11.3k|                }
23928|       |
23929|       |                // the key is written directly (not via a temporary basic_json),
23930|       |                // with the object as diagnostics context, as in write_cbor
23931|  12.4k|                write_cbor_key(current.object_it->first, *current.value);
23932|  12.4k|                const BasicJsonType* child = &(current.object_it->second);
23933|  12.4k|                ++stack.back().object_it;
23934|  12.4k|                write_cbor_value_or_push(*child, stack);
23935|  12.4k|            }
23936|   147k|        }
23937|  3.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE24write_cbor_value_or_pushERKSG_RNS6_INSJ_22binary_container_frameENSA_ISM_EEEE:
23864|  80.2k|    {
23865|  80.2k|        if (j.is_array())
  ------------------
  |  Branch (23865:13): [True: 60.6k, False: 19.5k]
  ------------------
23866|  60.6k|        {
23867|  60.6k|            write_cbor_head(0x80, j.m_data.m_value.array->size());
23868|  60.6k|            if (!j.m_data.m_value.array->empty())
  ------------------
  |  Branch (23868:17): [True: 59.3k, False: 1.29k]
  ------------------
23869|  59.3k|            {
23870|  59.3k|                stack.emplace_back(&j);
23871|  59.3k|            }
23872|  60.6k|            return;
23873|  60.6k|        }
23874|       |
23875|  19.5k|        if (j.is_object())
  ------------------
  |  Branch (23875:13): [True: 12.1k, False: 7.44k]
  ------------------
23876|  12.1k|        {
23877|  12.1k|            write_cbor_head(0xA0, j.m_data.m_value.object->size());
23878|  12.1k|            if (!j.m_data.m_value.object->empty())
  ------------------
  |  Branch (23878:17): [True: 11.3k, False: 816]
  ------------------
23879|  11.3k|            {
23880|  11.3k|                stack.emplace_back(&j);
23881|  11.3k|            }
23882|  12.1k|            return;
23883|  12.1k|        }
23884|       |
23885|  7.44k|        write_cbor(j);
23886|  7.44k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE22binary_container_frameC2EPKSG_:
23823|  70.6k|            : value(value_)
23824|  70.6k|        {
23825|  70.6k|            if (value->is_object())
  ------------------
  |  Branch (23825:17): [True: 11.3k, False: 59.3k]
  ------------------
23826|  11.3k|            {
23827|  11.3k|                object_it = value->m_data.m_value.object->cbegin();
23828|  11.3k|            }
23829|  59.3k|            else
23830|  59.3k|            {
23831|  59.3k|                array_it = value->m_data.m_value.array->cbegin();
23832|  59.3k|            }
23833|  70.6k|        }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4typeEv:
32866|   202k|    {
32867|   202k|        return m_data.m_type;
32868|   202k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE15write_characterEh:
22744|  29.4k|    {
22745|  29.4k|        v.push_back(c);
22746|  29.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12to_char_typeIhTnPNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEvE4typeELPv0EEEhh:
26198|  44.2k|    {
26199|  44.2k|        return x;
26200|  44.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE15write_cbor_headEhm:
24873|   282k|    {
24874|   282k|        if (argument <= 0x17)
  ------------------
  |  Branch (24874:13): [True: 273k, False: 8.38k]
  ------------------
24875|   273k|        {
24876|   273k|            write_number(static_cast<std::uint8_t>(major_type + argument));
24877|   273k|        }
24878|  8.38k|        else if (argument <= (std::numeric_limits<std::uint8_t>::max)())
  ------------------
  |  Branch (24878:18): [True: 3.31k, False: 5.06k]
  ------------------
24879|  3.31k|        {
24880|  3.31k|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x18)));
24881|  3.31k|            write_number(static_cast<std::uint8_t>(argument));
24882|  3.31k|        }
24883|  5.06k|        else if (argument <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (24883:18): [True: 1.57k, False: 3.49k]
  ------------------
24884|  1.57k|        {
24885|  1.57k|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x19)));
24886|  1.57k|            write_number(static_cast<std::uint16_t>(argument));
24887|  1.57k|        }
24888|  3.49k|        else if (argument <= (std::numeric_limits<std::uint32_t>::max)())
  ------------------
  |  Branch (24888:18): [True: 1.15k, False: 2.33k]
  ------------------
24889|  1.15k|        {
24890|  1.15k|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x1A)));
24891|  1.15k|            write_number(static_cast<std::uint32_t>(argument));
24892|  1.15k|        }
24893|  2.33k|        else
24894|  2.33k|        {
24895|  2.33k|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x1B)));
24896|  2.33k|            write_number(argument);
24897|  2.33k|        }
24898|   282k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE19write_compact_floatEdhh:
26126|  10.8k|    {
26127|  10.8k|        static_assert(std::is_same<number_float_t, float>::value || std::is_same<number_float_t, double>::value,
26128|  10.8k|                      "number_float_t must be float or double for the CBOR/MessagePack/BON8 writer");
26129|  10.8k|#ifdef __GNUC__
26130|  10.8k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
26131|  10.8k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
26132|  10.8k|#endif
26133|       |        // When number_float_t is float, static_cast<float>(n) is the identity and
26134|       |        // both branches below are intentionally identical (the "compact" float
26135|       |        // representation is the value itself). Only GCC diagnoses this, and only
26136|       |        // when the sink calls are inlined; clang has no such warning.
26137|       |        // (-Wduplicated-branches only exists from GCC 7 on; naming it on an older
26138|       |        // GCC would itself warn under -Wpragmas)
26139|       |#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 7)
26140|       |        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wduplicated-branches")
26141|       |#endif
26142|  10.8k|        if (!std::isfinite(n) || ((static_cast<double>(n) >= static_cast<double>(std::numeric_limits<float>::lowest()) &&
  ------------------
  |  Branch (26142:13): [True: 0, False: 10.8k]
  |  Branch (26142:36): [True: 10.4k, False: 308]
  ------------------
26143|  10.4k|                                   static_cast<double>(n) <= static_cast<double>((std::numeric_limits<float>::max)()) &&
  ------------------
  |  Branch (26143:36): [True: 10.3k, False: 118]
  ------------------
26144|  10.3k|                                   static_cast<double>(static_cast<float>(n)) == static_cast<double>(n))))
  ------------------
  |  Branch (26144:36): [True: 8.53k, False: 1.84k]
  ------------------
26145|  8.53k|        {
26146|  8.53k|            oa.write_character(float32_marker);
26147|  8.53k|            write_number(static_cast<float>(n));
26148|  8.53k|        }
26149|  2.27k|        else
26150|  2.27k|        {
26151|  2.27k|            oa.write_character(float64_marker);
26152|  2.27k|            write_number(n);
26153|  2.27k|        }
26154|  10.8k|#ifdef __GNUC__
26155|  10.8k|        JSON_HEDLEY_DIAGNOSTIC_POP
26156|  10.8k|#endif
26157|  10.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIfEEvT_b:
26103|  8.53k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  8.53k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  8.53k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  8.53k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 8.53k, False: 0]
  ------------------
26110|  8.53k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  8.53k|            reverse_bytes(vec);
26113|  8.53k|        }
26114|       |
26115|  8.53k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  8.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesERNS4_5arrayIhLm4EEE:
26073|  9.68k|    {
26074|  9.68k|        byte_swap_buffer<std::uint32_t>(a);
26075|  9.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16byte_swap_bufferIjLm4EEEvRNS4_5arrayIhXT0_EEE:
26057|  9.68k|    {
26058|  9.68k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  9.68k|        UIntType v{};
26060|  9.68k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  9.68k|        v = byte_swap(v);
26062|  9.68k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  9.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEj:
26021|  9.68k|    {
26022|  9.68k|#if defined(__GNUC__) || defined(__clang__)
26023|  9.68k|        return __builtin_bswap32(x);
26024|       |#elif defined(_MSC_VER)
26025|       |        return _byteswap_ulong(x);
26026|       |#else
26027|       |        return ((x & 0x000000FFu) << 24) | ((x & 0x0000FF00u) << 8)
26028|       |               | ((x & 0x00FF0000u) >> 8) | ((x & 0xFF000000u) >> 24);
26029|       |#endif
26030|  9.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIdEEvT_b:
26103|  2.27k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  2.27k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  2.27k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  2.27k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 2.27k, False: 0]
  ------------------
26110|  2.27k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  2.27k|            reverse_bytes(vec);
26113|  2.27k|        }
26114|       |
26115|  2.27k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  2.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesERNS4_5arrayIhLm8EEE:
26078|  4.60k|    {
26079|  4.60k|        byte_swap_buffer<std::uint64_t>(a);
26080|  4.60k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16byte_swap_bufferImLm8EEEvRNS4_5arrayIhXT0_EEE:
26057|  4.60k|    {
26058|  4.60k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  4.60k|        UIntType v{};
26060|  4.60k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  4.60k|        v = byte_swap(v);
26062|  4.60k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  4.60k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEm:
26033|  4.60k|    {
26034|  4.60k|#if defined(__GNUC__) || defined(__clang__)
26035|  4.60k|        return __builtin_bswap64(x);
26036|       |#elif defined(_MSC_VER)
26037|       |        return _byteswap_uint64(x);
26038|       |#else
26039|       |        x = ((x & 0x00000000FFFFFFFFull) << 32) | ((x & 0xFFFFFFFF00000000ull) >> 32);
26040|       |        x = ((x & 0x0000FFFF0000FFFFull) << 16) | ((x & 0xFFFF0000FFFF0000ull) >> 16);
26041|       |        x = ((x & 0x00FF00FF00FF00FFull) << 8) | ((x & 0xFF00FF00FF00FF00ull) >> 8);
26042|       |        return x;
26043|       |#endif
26044|  4.60k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_cbor_stringERKSC_RKSG_:
24952|  36.6k|    {
24953|  36.6k|        string_t storage;
24954|  36.6k|        const string_t& sanitized = sanitize_utf8_for_write(value, context, storage);
24955|       |
24956|       |        // step 1: write control byte and the string length
24957|  36.6k|        write_cbor_head(0x60, sanitized.size());
24958|       |
24959|       |        // step 2: write the string
24960|  36.6k|        oa.write_characters(
24961|  36.6k|              reinterpret_cast<const CharType*>(sanitized.data()),
24962|  36.6k|              sanitized.size());
24963|  36.6k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE23sanitize_utf8_for_writeERKSC_RKSG_RSC_:
25865|  36.6k|    {
25866|  36.6k|        switch (error_handler)
25867|  36.6k|        {
25868|  36.6k|            case error_handler_t::keep:
  ------------------
  |  Branch (25868:13): [True: 36.6k, False: 0]
  ------------------
25869|  36.6k|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25870|       |
25871|      0|            case error_handler_t::strict:
  ------------------
  |  Branch (25871:13): [True: 0, False: 36.6k]
  ------------------
25872|      0|                check_utf8(s, context);
25873|      0|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25874|       |
25875|      0|            case error_handler_t::replace:
  ------------------
  |  Branch (25875:13): [True: 0, False: 36.6k]
  ------------------
25876|      0|            case error_handler_t::ignore:
  ------------------
  |  Branch (25876:13): [True: 0, False: 36.6k]
  ------------------
25877|      0|            default:
  ------------------
  |  Branch (25877:13): [True: 0, False: 36.6k]
  ------------------
25878|      0|                if (is_valid_utf8(s))
  ------------------
  |  Branch (25878:21): [True: 0, False: 0]
  ------------------
25879|      0|                {
25880|      0|                    return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25881|      0|                }
25882|      0|                storage = sanitize_utf8(s, error_handler);
25883|      0|                return storage;
25884|  36.6k|        }
25885|  36.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIhEEvT_b:
26103|   276k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|   276k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|   276k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|   276k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 276k, False: 0]
  ------------------
26110|   276k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|   276k|            reverse_bytes(vec);
26113|   276k|        }
26114|       |
26115|   276k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|   276k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesILm1EEEvRNS4_5arrayIhXT_EEE:
26084|   276k|    {
26085|   276k|        std::reverse(a.begin(), a.end());
26086|   276k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberItEEvT_b:
26103|  1.57k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.57k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.57k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.57k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.57k, False: 0]
  ------------------
26110|  1.57k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.57k|            reverse_bytes(vec);
26113|  1.57k|        }
26114|       |
26115|  1.57k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesERNS4_5arrayIhLm2EEE:
26068|  1.57k|    {
26069|  1.57k|        byte_swap_buffer<std::uint16_t>(a);
26070|  1.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16byte_swap_bufferItLm2EEEvRNS4_5arrayIhXT0_EEE:
26057|  1.57k|    {
26058|  1.57k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  1.57k|        UIntType v{};
26060|  1.57k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  1.57k|        v = byte_swap(v);
26062|  1.57k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  1.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEt:
26010|  1.57k|    {
26011|  1.57k|#if defined(__GNUC__) || defined(__clang__)
26012|  1.57k|        return __builtin_bswap16(x);
26013|       |#elif defined(_MSC_VER)
26014|       |        return _byteswap_ushort(x);
26015|       |#else
26016|       |        return static_cast<std::uint16_t>((x >> 8) | (x << 8));
26017|       |#endif
26018|  1.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIjEEvT_b:
26103|  1.15k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.15k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.15k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.15k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.15k, False: 0]
  ------------------
26110|  1.15k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.15k|            reverse_bytes(vec);
26113|  1.15k|        }
26114|       |
26115|  1.15k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberImEEvT_b:
26103|  2.33k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  2.33k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  2.33k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  2.33k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 2.33k, False: 0]
  ------------------
26110|  2.33k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  2.33k|            reverse_bytes(vec);
26113|  2.33k|        }
26114|       |
26115|  2.33k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  2.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE16write_charactersEPKhm:
22753|   369k|    {
22754|   369k|        v.insert(v.end(), s, s + length);
22755|   369k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14write_cbor_keyISC_TnNS4_9enable_ifIXsr3std14is_convertibleIT_SC_EE5valueEiE4typeELi0EEEvRKSC_RKSG_:
24911|  24.2k|    {
24912|  24.2k|        write_cbor_string(key, context);
24913|  24.2k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIPKhSH_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SJ_SK_bbNS0_6detail18cbor_tag_handler_tENSN_15error_handler_tE:
36597|  6.72k|    {
36598|  6.72k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
36599|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIRNS2_19basic_istringstreamIcS7_S9_EEEESE_OT_bbNS0_6detail18cbor_tag_handler_tENSL_15error_handler_tE:
36583|  6.72k|    {
36584|  6.72k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
36585|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail20input_stream_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  6.72k|    {
36386|  6.72k|        basic_json result;
36387|  6.72k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  6.72k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  6.72k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 6.72k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  6.72k|        return result;
36394|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  6.72k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  6.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  6.72k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  6.72k|    {
14946|  6.72k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2EOS2_:
 8481|  6.72k|        : is(rhs.is), sb(rhs.sb)
 8482|  6.72k|    {
 8483|  6.72k|        rhs.is = nullptr;
 8484|  6.72k|        rhs.sb = nullptr;
 8485|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  6.72k|    {
14970|  6.72k|        sax = sax_;
14971|  6.72k|        container_stack.clear();
14972|  6.72k|        bon8_pushback_size = 0;
14973|  6.72k|        bool result = false;
14974|       |
14975|  6.72k|        switch (input_format)
14976|  6.72k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 6.72k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|  6.72k|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 6.72k, False: 0]
  ------------------
14982|  6.72k|                result = parse_cbor_internal(tag_handler);
14983|  6.72k|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 6.72k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 6.72k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 6.72k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 6.72k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 6.72k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 6.72k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  6.72k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  3.69k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 3.69k, False: 0]
  |  Branch (15004:23): [True: 3.69k, False: 0]
  ------------------
15005|  3.69k|        {
15006|  3.69k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 3.69k]
  |  Branch (15006:59): [True: 0, False: 3.69k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  3.69k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 3.69k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  3.69k|            else
15016|  3.69k|            {
15017|  3.69k|                get();
15018|  3.69k|            }
15019|       |
15020|  3.69k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.69k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 91, False: 3.60k]
  |  |  ------------------
  ------------------
15021|     91|            {
15022|     91|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     91|            }
15024|  3.69k|        }
15025|       |
15026|  3.60k|        return result;
15027|  3.69k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|  2.50k|    {
19059|  2.50k|        return sax->parse_error(chars_read, "<end of file>",
19060|  2.50k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  2.50k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  2.90k|    {
14005|  2.90k|        errored = true;
14006|  2.90k|        static_cast<void>(ex);
14007|  2.90k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.90k, False: 0]
  ------------------
14008|  2.90k|        {
14009|  2.90k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.90k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.90k|        }
14011|      0|        return false;
14012|  2.90k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  2.90k|    {
19164|  2.90k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  2.90k|        switch (input_format)
19167|  2.90k|        {
19168|  2.90k|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 2.90k, False: 0]
  ------------------
19169|  2.90k|                error_msg += "CBOR";
19170|  2.90k|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 2.90k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 2.90k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 2.90k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 2.90k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 2.90k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 2.90k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 2.90k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  2.90k|        }
19196|       |
19197|  2.90k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  2.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|   115k|    {
15083|   115k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   230k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 115k]
  |  |  |  Branch (1667:94): [True: 21.0k, False: 94.4k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   115k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   115k|        return true;
15090|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12start_objectEm:
13930|  21.0k|    {
13931|  21.0k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  21.0k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  21.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   115k|    {
14031|   115k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4.35k, False: 111k]
  ------------------
14032|  4.35k|        {
14033|  4.35k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  4.35k|            return &root;
14040|  4.35k|        }
14041|       |
14042|   111k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|   111k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 95.6k, False: 15.4k]
  |  Branch (14042:9): [True: 15.4k, False: 0]
  |  Branch (14042:9): [True: 111k, False: 0]
  ------------------
14043|       |
14044|   111k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 95.6k, False: 15.4k]
  ------------------
14045|  95.6k|        {
14046|  95.6k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  95.6k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  95.6k|        }
14054|       |
14055|  15.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 15.4k, False: 0]
  ------------------
14056|  15.4k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 15.4k, False: 0]
  ------------------
14057|  15.4k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  15.4k|        return object_element;
14064|  15.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_20input_stream_adapterEEESH_EEbRT_mPKcPT0_:
13724|   115k|{
13725|   115k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   222k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 218, False: 115k]
  |  |  |  Branch (1667:94): [True: 107k, False: 7.90k]
  |  |  |  Branch (1667:94): [True: 218, False: 107k]
  |  |  ------------------
  ------------------
13726|    218|    {
13727|    218|        return container_too_large_error(sax, len, kind, ref);
13728|    218|    }
13729|   115k|    return true;
13730|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_20input_stream_adapterEEESH_EEbRT_mPKcPT0_:
13718|    218|{
13719|    218|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
13720|    218|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11parse_errorINS1_12out_of_rangeEEEbmRKSC_RKT_:
14004|    220|    {
14005|    220|        errored = true;
14006|    220|        static_cast<void>(ex);
14007|    220|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 220, False: 0]
  ------------------
14008|    220|        {
14009|    220|            JSON_THROW(ex);
  ------------------
  |  | 2556|    220|    #define JSON_THROW(exception) throw exception
  ------------------
14010|    220|        }
14011|      0|        return false;
14012|    220|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11start_arrayEm:
13966|  94.4k|    {
13967|  94.4k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  94.4k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  94.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 94.4k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  94.4k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 87.4k, False: 6.96k]
  ------------------
13980|  87.4k|        {
13981|  87.4k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  87.4k|        }
13983|       |
13984|  94.4k|        return true;
13985|  94.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|   115k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  88.0k|    {
15115|  88.0k|        const bool is_object = container_stack.back().is_object;
15116|  88.0k|        container_stack.pop_back();
15117|  88.0k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 13.1k, False: 74.9k]
  ------------------
15118|  88.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE10end_objectEv:
13952|  13.1k|    {
13953|  13.1k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  13.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 13.1k, False: 0]
  ------------------
13954|  13.1k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 13.1k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  13.1k|        ref_stack.back()->set_parents();
13961|  13.1k|        ref_stack.pop_back();
13962|  13.1k|        return true;
13963|  13.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE9end_arrayEv:
13988|  74.9k|    {
13989|  74.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  74.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 74.9k, False: 0]
  ------------------
13990|  74.9k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  74.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 74.9k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  74.9k|        ref_stack.back()->set_parents();
13997|  74.9k|        ref_stack.pop_back();
13998|  74.9k|        return true;
13999|  74.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|  85.2k|    {
19042|  85.2k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  85.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.25k, False: 82.9k]
  |  |  ------------------
  ------------------
19043|  2.25k|        {
19044|  2.25k|            return report_eof(context);
19045|  2.25k|        }
19046|  82.9k|        return true;
19047|  85.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17check_string_utf8ERSC_PKc:
18941|  40.8k|    {
18942|  40.8k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 40.8k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  40.8k|        {
18944|  40.8k|            return true;
18945|  40.8k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE3keyERSC_:
13942|  27.6k|    {
13943|  27.6k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  27.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 27.6k, False: 0]
  ------------------
13944|  27.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  27.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 27.6k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  27.6k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  27.6k|        return true;
13949|  27.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|  1.16k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.16k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.16k|        chars_read += new_chars_read;
18672|  1.16k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 13, False: 1.15k]
  |  |  ------------------
  ------------------
18673|     13|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     13|            ++chars_read;
18676|     13|            static_cast<void>(report_eof(context));
18677|     13|            return false;
18678|     13|        }
18679|  1.15k|        return true;
18680|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIdEEmPT_m:
 8507|  1.16k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.16k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.16k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 13, False: 1.15k]
  |  |  ------------------
  ------------------
 8513|     13|        {
 8514|     13|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     13|        }
 8516|  1.16k|        return res;
 8517|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIdEEvRT_:
18698|  1.15k|    {
18699|  1.15k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.15k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.75k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.60k, False: 1.15k]
  ------------------
18715|  4.60k|            {
18716|  4.60k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.60k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|  1.15k|    {
18826|  1.15k|        const auto result = static_cast<number_float_t>(number);
18827|  1.15k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.15k]
  |  |  |  Branch (1667:94): [True: 1.14k, False: 8]
  |  |  |  Branch (1667:94): [True: 0, False: 1.14k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.15k|        return sax->number_float(result, "");
18832|  1.15k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    798|    {
19153|    798|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    798|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12number_floatEdRKSC_:
13908|  7.80k|    {
13909|  7.80k|        handle_value(val);
13910|  7.80k|        return true;
13911|  7.80k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  7.80k|    {
14031|  7.80k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 454, False: 7.34k]
  ------------------
14032|    454|        {
14033|    454|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    454|            return &root;
14040|    454|        }
14041|       |
14042|  7.34k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  7.34k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 7.05k, False: 294]
  |  Branch (14042:9): [True: 294, False: 0]
  |  Branch (14042:9): [True: 7.34k, False: 0]
  ------------------
14043|       |
14044|  7.34k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 7.05k, False: 294]
  ------------------
14045|  7.05k|        {
14046|  7.05k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  7.05k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  7.05k|        }
14054|       |
14055|    294|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    294|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 294, False: 0]
  ------------------
14056|    294|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    294|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 294, False: 0]
  ------------------
14057|    294|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    294|        return object_element;
14064|    294|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIcEEmPT_m:
 8507|  14.9k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  14.9k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  14.9k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  14.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 450, False: 14.5k]
  |  |  ------------------
  ------------------
 8513|    450|        {
 8514|    450|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|    450|        }
 8516|  14.9k|        return res;
 8517|  14.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6stringERSC_:
13914|  13.2k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  13.2k|        handle_value(std::move(val));
13918|  13.2k|        return true;
13919|  13.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueISC_EEPSG_OT_:
14030|  13.2k|    {
14031|  13.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 395, False: 12.8k]
  ------------------
14032|    395|        {
14033|    395|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    395|            return &root;
14040|    395|        }
14041|       |
14042|  12.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 9.55k, False: 3.31k]
  |  Branch (14042:9): [True: 3.31k, False: 0]
  |  Branch (14042:9): [True: 12.8k, False: 0]
  ------------------
14043|       |
14044|  12.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 9.55k, False: 3.31k]
  ------------------
14045|  9.55k|        {
14046|  9.55k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  9.55k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  9.55k|        }
14054|       |
14055|  3.31k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.31k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.31k, False: 0]
  ------------------
14056|  3.31k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.31k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.31k, False: 0]
  ------------------
14057|  3.31k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.31k|        return object_element;
14064|  3.31k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIhEEmPT_m:
 8507|  9.59k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  9.59k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  9.59k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  9.59k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 468, False: 9.12k]
  |  |  ------------------
  ------------------
 8513|    468|        {
 8514|    468|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|    468|        }
 8516|  9.59k|        return res;
 8517|  9.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  25.8k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  25.8k|        handle_value(std::move(val));
13926|  25.8k|        return true;
13927|  25.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  25.8k|    {
14031|  25.8k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 100, False: 25.7k]
  ------------------
14032|    100|        {
14033|    100|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    100|            return &root;
14040|    100|        }
14041|       |
14042|  25.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  25.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 23.9k, False: 1.82k]
  |  Branch (14042:9): [True: 1.82k, False: 0]
  |  Branch (14042:9): [True: 25.7k, False: 0]
  ------------------
14043|       |
14044|  25.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 23.9k, False: 1.82k]
  ------------------
14045|  23.9k|        {
14046|  23.9k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  23.9k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  23.9k|        }
14054|       |
14055|  1.82k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.82k, False: 0]
  ------------------
14056|  1.82k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.82k, False: 0]
  ------------------
14057|  1.82k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.82k|        return object_element;
14064|  1.82k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIhLb0EEEbRT_:
18739|  4.12k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.12k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.12k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.12k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.08k, False: 34]
  |  Branch (18746:34): [Folded, False: 4.08k]
  |  Branch (18746:57): [True: 0, False: 4.08k]
  ------------------
18747|  4.08k|        {
18748|  4.08k|            byte_swap(result);
18749|  4.08k|        }
18750|  4.12k|        return true;
18751|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIhEEbRT_PKc:
18667|  4.12k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.12k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.12k|        chars_read += new_chars_read;
18672|  4.12k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 34, False: 4.08k]
  |  |  ------------------
  ------------------
18673|     34|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     34|            ++chars_read;
18676|     34|            static_cast<void>(report_eof(context));
18677|     34|            return false;
18678|     34|        }
18679|  4.08k|        return true;
18680|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIhEEvRT_:
18698|  4.08k|    {
18699|  4.08k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.08k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.08k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 4.08k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.08k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE7booleanEb:
13890|  3.82k|    {
13891|  3.82k|        handle_value(val);
13892|  3.82k|        return true;
13893|  3.82k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  3.82k|    {
14031|  3.82k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4, False: 3.82k]
  ------------------
14032|      4|        {
14033|      4|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      4|            return &root;
14040|      4|        }
14041|       |
14042|  3.82k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 3.22k, False: 597]
  |  Branch (14042:9): [True: 597, False: 0]
  |  Branch (14042:9): [True: 3.82k, False: 0]
  ------------------
14043|       |
14044|  3.82k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 3.22k, False: 597]
  ------------------
14045|  3.22k|        {
14046|  3.22k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  3.22k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  3.22k|        }
14054|       |
14055|    597|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    597|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 597, False: 0]
  ------------------
14056|    597|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    597|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 597, False: 0]
  ------------------
14057|    597|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    597|        return object_element;
14064|    597|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE4nullEv:
13884|  2.71k|    {
13885|  2.71k|        handle_value(nullptr);
13886|  2.71k|        return true;
13887|  2.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  2.71k|    {
14031|  2.71k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 2.70k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  2.70k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.70k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.37k, False: 330]
  |  Branch (14042:9): [True: 330, False: 0]
  |  Branch (14042:9): [True: 2.70k, False: 0]
  ------------------
14043|       |
14044|  2.70k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.37k, False: 330]
  ------------------
14045|  2.37k|        {
14046|  2.37k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.37k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.37k|        }
14054|       |
14055|    330|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    330|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 330, False: 0]
  ------------------
14056|    330|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    330|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 330, False: 0]
  ------------------
14057|    330|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    330|        return object_element;
14064|    330|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE14number_integerEl:
13896|  16.7k|    {
13897|  16.7k|        handle_value(val);
13898|  16.7k|        return true;
13899|  16.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  16.7k|    {
14031|  16.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 330, False: 16.3k]
  ------------------
14032|    330|        {
14033|    330|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    330|            return &root;
14040|    330|        }
14041|       |
14042|  16.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  16.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 12.8k, False: 3.57k]
  |  Branch (14042:9): [True: 3.57k, False: 0]
  |  Branch (14042:9): [True: 16.3k, False: 0]
  ------------------
14043|       |
14044|  16.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 12.8k, False: 3.57k]
  ------------------
14045|  12.8k|        {
14046|  12.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  12.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  12.8k|        }
14054|       |
14055|  3.57k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.57k, False: 0]
  ------------------
14056|  3.57k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.57k, False: 0]
  ------------------
14057|  3.57k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.57k|        return object_element;
14064|  3.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE15number_unsignedEm:
13902|  23.0k|    {
13903|  23.0k|        handle_value(val);
13904|  23.0k|        return true;
13905|  23.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  23.0k|    {
14031|  23.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 282, False: 22.7k]
  ------------------
14032|    282|        {
14033|    282|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    282|            return &root;
14040|    282|        }
14041|       |
14042|  22.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  22.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 20.8k, False: 1.90k]
  |  Branch (14042:9): [True: 1.90k, False: 0]
  |  Branch (14042:9): [True: 22.7k, False: 0]
  ------------------
14043|       |
14044|  22.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 20.8k, False: 1.90k]
  ------------------
14045|  20.8k|        {
14046|  20.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  20.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  20.8k|        }
14054|       |
14055|  1.90k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.90k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.90k, False: 0]
  ------------------
14056|  1.90k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.90k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.90k, False: 0]
  ------------------
14057|  1.90k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.90k|        return object_element;
14064|  1.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIeEEbT_:
18825|    164|    {
18826|    164|        const auto result = static_cast<number_float_t>(number);
18827|    164|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|    328|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 164]
  |  |  |  Branch (1667:94): [True: 164, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 164]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    164|        return sax->number_float(result, "");
18832|    164|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toImEEbRT_PKc:
18667|  2.89k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  2.89k|        auto new_chars_read = ia.get_elements(&dest);
18671|  2.89k|        chars_read += new_chars_read;
18672|  2.89k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  2.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 80, False: 2.81k]
  |  |  ------------------
  ------------------
18673|     80|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     80|            ++chars_read;
18676|     80|            static_cast<void>(report_eof(context));
18677|     80|            return false;
18678|     80|        }
18679|  2.81k|        return true;
18680|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsImEEmPT_m:
 8507|  2.89k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  2.89k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  2.89k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  2.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 80, False: 2.81k]
  |  |  ------------------
  ------------------
 8513|     80|        {
 8514|     80|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     80|        }
 8516|  2.89k|        return res;
 8517|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapImEEvRT_:
18698|  2.81k|    {
18699|  2.81k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  2.81k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  14.0k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 11.2k, False: 2.81k]
  ------------------
18715|  11.2k|            {
18716|  11.2k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  11.2k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  2.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|    644|    {
18800|    644|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    644|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 644, False: 0]
  |  |  ------------------
  ------------------
18801|    644|        {
18802|    644|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    644|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    644|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_cbor_internalENS1_18cbor_tag_handler_tE:
16340|  6.72k|    {
16341|       |        // whether the next value starts at a fresh byte or at the one already
16342|       |        // read into `current`
16343|  6.72k|        bool fetch = true;
16344|       |
16345|       |        // the key currently being read; hoisted out of the loop so that its
16346|       |        // capacity is reused across elements and across nesting levels
16347|  6.72k|        string_t key;
16348|       |
16349|   302k|        while (true)
  ------------------
  |  Branch (16349:16): [True: 299k, Folded]
  ------------------
16350|   299k|        {
16351|   299k|            if (!container_stack.empty())
  ------------------
  |  Branch (16351:17): [True: 292k, False: 6.72k]
  ------------------
16352|   292k|            {
16353|       |                // a copy, not a reference: it must stay valid across the
16354|       |                // pop_back() below, which destroys the container_stack element
16355|       |                // it would otherwise alias
16356|   292k|                const container_frame top = container_stack.back();
16357|   292k|                bool at_end = false;
16358|       |
16359|   292k|                if (top.remaining != npos)
  ------------------
  |  Branch (16359:21): [True: 196k, False: 96.2k]
  ------------------
16360|   196k|                {
16361|       |                    // definite length: the container ends once its elements
16362|       |                    // have been read
16363|   196k|                    at_end = (top.remaining == 0);
16364|   196k|                    if (!at_end)
  ------------------
  |  Branch (16364:25): [True: 110k, False: 85.9k]
  ------------------
16365|   110k|                    {
16366|       |                        // claim the element about to be read
16367|   110k|                        --container_stack.back().remaining;
16368|   110k|                        if (top.is_object)
  ------------------
  |  Branch (16368:29): [True: 19.8k, False: 90.6k]
  ------------------
16369|  19.8k|                        {
16370|  19.8k|                            get();
16371|  19.8k|                        }
16372|   110k|                    }
16373|   196k|                    fetch = true;
16374|   196k|                }
16375|  96.2k|                else
16376|  96.2k|                {
16377|       |                    // indefinite length: the container ends at a break marker.
16378|       |                    // Testing for it consumes a byte, which is the first byte
16379|       |                    // of the next element when it is not one.
16380|  96.2k|                    at_end = (get() == 0xFF);
16381|  96.2k|                    fetch = top.is_object;
16382|  96.2k|                }
16383|       |
16384|   292k|                if (at_end)
  ------------------
  |  Branch (16384:21): [True: 88.0k, False: 204k]
  ------------------
16385|  88.0k|                {
16386|  88.0k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  88.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 88.0k]
  |  |  ------------------
  ------------------
16387|      0|                    {
16388|      0|                        return false;
16389|      0|                    }
16390|       |                    // the value begun here is complete once its container is
16391|  88.0k|                    if (container_stack.empty())
  ------------------
  |  Branch (16391:25): [True: 2.12k, False: 85.9k]
  ------------------
16392|  2.12k|                    {
16393|  2.12k|                        return true;
16394|  2.12k|                    }
16395|  85.9k|                    continue;
16396|  88.0k|                }
16397|       |
16398|   204k|                if (top.is_object)
  ------------------
  |  Branch (16398:21): [True: 28.0k, False: 176k]
  ------------------
16399|  28.0k|                {
16400|  28.0k|                    key.clear();
16401|  28.0k|                    if (JSON_HEDLEY_UNLIKELY(!get_cbor_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  55.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 28.0k]
  |  |  |  Branch (1667:94): [True: 432, False: 27.6k]
  |  |  |  Branch (1667:94): [True: 0, False: 27.6k]
  |  |  ------------------
  ------------------
16402|      0|                    {
16403|      0|                        return false;
16404|      0|                    }
16405|  28.0k|                    fetch = true;
16406|  28.0k|                }
16407|   204k|            }
16408|       |
16409|       |            // a tag is not a value of its own: read on until the tagged value
16410|   211k|            bool tag_pending = false;
16411|   211k|            bool item_read = false;
16412|   211k|            do
16413|   211k|            {
16414|   211k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1667|   211k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 211k]
  |  |  ------------------
  ------------------
16415|      0|                {
16416|      0|                    return false;
16417|      0|                }
16418|   211k|                fetch = !item_read;
16419|   211k|            }
16420|   211k|            while (tag_pending);
  ------------------
  |  Branch (16420:20): [True: 0, False: 211k]
  ------------------
16421|       |
16422|       |            // a value that opened a container left it on the stack; one that
16423|       |            // did not, and that was not inside a container, was the whole value
16424|   211k|            if (container_stack.empty())
  ------------------
  |  Branch (16424:17): [True: 1.56k, False: 209k]
  ------------------
16425|  1.56k|            {
16426|  1.56k|                return true;
16427|  1.56k|            }
16428|   211k|        }
16429|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE19get_cbor_object_keyERSC_:
16039|  28.0k|    {
16040|       |        // EOF and major type 3 (text string) are left to get_cbor_string
16041|  28.0k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (16041:13): [True: 283, False: 27.7k]
  |  Branch (16041:57): [True: 27.6k, False: 127]
  ------------------
16042|  27.9k|        {
16043|  27.9k|            return get_cbor_string(result, "key");
16044|  27.9k|        }
16045|       |
16046|    127|        const char* found = nullptr;
16047|    127|        switch (static_cast<unsigned int>(current) >> 5u)
16048|    127|        {
16049|     35|            case 0:
  ------------------
  |  Branch (16049:13): [True: 35, False: 92]
  ------------------
16050|     35|                found = "an unsigned integer";
16051|     35|                break;
16052|     17|            case 1:
  ------------------
  |  Branch (16052:13): [True: 17, False: 110]
  ------------------
16053|     17|                found = "a negative integer";
16054|     17|                break;
16055|     11|            case 2:
  ------------------
  |  Branch (16055:13): [True: 11, False: 116]
  ------------------
16056|     11|                found = "a byte string";
16057|     11|                break;
16058|     11|            case 4:
  ------------------
  |  Branch (16058:13): [True: 11, False: 116]
  ------------------
16059|     11|                found = "an array";
16060|     11|                break;
16061|     25|            case 5:
  ------------------
  |  Branch (16061:13): [True: 25, False: 102]
  ------------------
16062|     25|                found = "a map";
16063|     25|                break;
16064|      5|            case 6:
  ------------------
  |  Branch (16064:13): [True: 5, False: 122]
  ------------------
16065|      5|                found = "a tag";
16066|      5|                break;
16067|     23|            default: // major type 7
  ------------------
  |  Branch (16067:13): [True: 23, False: 104]
  ------------------
16068|     23|                switch (current)
16069|     23|                {
16070|      1|                    case 0xF4:
  ------------------
  |  Branch (16070:21): [True: 1, False: 22]
  ------------------
16071|      1|                    case 0xF5:
  ------------------
  |  Branch (16071:21): [True: 0, False: 23]
  ------------------
16072|      1|                        found = "a boolean";
16073|      1|                        break;
16074|      0|                    case 0xF6:
  ------------------
  |  Branch (16074:21): [True: 0, False: 23]
  ------------------
16075|      0|                        found = "null";
16076|      0|                        break;
16077|      1|                    case 0xF7:
  ------------------
  |  Branch (16077:21): [True: 1, False: 22]
  ------------------
16078|      1|                        found = "undefined";
16079|      1|                        break;
16080|      1|                    case 0xF9:
  ------------------
  |  Branch (16080:21): [True: 1, False: 22]
  ------------------
16081|      1|                    case 0xFA:
  ------------------
  |  Branch (16081:21): [True: 0, False: 23]
  ------------------
16082|      1|                    case 0xFB:
  ------------------
  |  Branch (16082:21): [True: 0, False: 23]
  ------------------
16083|      1|                        found = "a floating-point number";
16084|      1|                        break;
16085|      5|                    case 0xFF:
  ------------------
  |  Branch (16085:21): [True: 5, False: 18]
  ------------------
16086|      5|                        found = "a break stop code";
16087|      5|                        break;
16088|     15|                    default:
  ------------------
  |  Branch (16088:21): [True: 15, False: 8]
  ------------------
16089|     15|                        found = "a simple value";
16090|     15|                        break;
16091|     23|                }
16092|     23|                break;
16093|    127|        }
16094|       |
16095|    127|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16096|    127|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_cbor_stringERSC_PKc:
15982|  41.7k|    {
15983|       |        // read chunks iteratively, but reject a second indefinite-length
15984|       |        // level as required by RFC 8949, Section 3.2.3
15985|  41.7k|        bool indefinite = false;
15986|       |
15987|  44.0k|        while (true)
  ------------------
  |  Branch (15987:16): [True: 43.2k, Folded]
  ------------------
15988|  43.2k|        {
15989|  43.2k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|  43.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 43.2k]
  |  |  ------------------
  ------------------
15990|      0|            {
15991|      0|                return false;
15992|      0|            }
15993|       |
15994|  43.2k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15994:17): [True: 550, False: 42.6k]
  ------------------
15995|    550|            {
15996|    550|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|    550|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3, False: 547]
  |  |  ------------------
  ------------------
15997|      3|                {
15998|      3|                    return cbor_indefinite_string_error("string", "string");
15999|      3|                }
16000|    547|                indefinite = true;
16001|    547|                get();
16002|    547|                continue;
16003|    550|            }
16004|       |
16005|       |            // a break marker closes the indefinite-length string; outside
16006|       |            // of one it falls through to the error below
16007|  42.6k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16007:17): [True: 1.50k, False: 41.1k]
  |  Branch (16007:31): [True: 467, False: 1.03k]
  ------------------
16008|    467|            {
16009|    467|                return check_string_utf8(result, context);
16010|    467|            }
16011|       |
16012|  42.2k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, indefinite)))
  ------------------
  |  | 1667|  42.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 42.2k]
  |  |  ------------------
  ------------------
16013|      0|            {
16014|      0|                return false;
16015|      0|            }
16016|       |
16017|  42.2k|            if (!indefinite)
  ------------------
  |  Branch (16017:17): [True: 40.4k, False: 1.80k]
  ------------------
16018|  40.4k|            {
16019|  40.4k|                return check_string_utf8(result, context);
16020|  40.4k|            }
16021|       |
16022|  1.80k|            get();
16023|  1.80k|        }
16024|  41.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE28cbor_indefinite_string_errorEPKcSM_:
15887|      6|    {
15888|      6|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
15889|      6|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE21get_cbor_string_chunkERSC_b:
15907|  41.9k|    {
15908|  41.9k|        switch (current)
15909|  41.9k|        {
15910|       |            // UTF-8 string (0x00..0x17 bytes follow)
15911|  25.6k|            case 0x60:
  ------------------
  |  Branch (15911:13): [True: 25.6k, False: 16.2k]
  ------------------
15912|  34.5k|            case 0x61:
  ------------------
  |  Branch (15912:13): [True: 8.86k, False: 33.0k]
  ------------------
15913|  35.2k|            case 0x62:
  ------------------
  |  Branch (15913:13): [True: 747, False: 41.1k]
  ------------------
15914|  35.5k|            case 0x63:
  ------------------
  |  Branch (15914:13): [True: 279, False: 41.6k]
  ------------------
15915|  35.8k|            case 0x64:
  ------------------
  |  Branch (15915:13): [True: 237, False: 41.6k]
  ------------------
15916|  36.1k|            case 0x65:
  ------------------
  |  Branch (15916:13): [True: 376, False: 41.5k]
  ------------------
15917|  36.4k|            case 0x66:
  ------------------
  |  Branch (15917:13): [True: 266, False: 41.6k]
  ------------------
15918|  36.6k|            case 0x67:
  ------------------
  |  Branch (15918:13): [True: 160, False: 41.7k]
  ------------------
15919|  36.8k|            case 0x68:
  ------------------
  |  Branch (15919:13): [True: 260, False: 41.6k]
  ------------------
15920|  36.9k|            case 0x69:
  ------------------
  |  Branch (15920:13): [True: 114, False: 41.8k]
  ------------------
15921|  37.1k|            case 0x6A:
  ------------------
  |  Branch (15921:13): [True: 163, False: 41.7k]
  ------------------
15922|  37.2k|            case 0x6B:
  ------------------
  |  Branch (15922:13): [True: 151, False: 41.7k]
  ------------------
15923|  37.4k|            case 0x6C:
  ------------------
  |  Branch (15923:13): [True: 206, False: 41.7k]
  ------------------
15924|  37.6k|            case 0x6D:
  ------------------
  |  Branch (15924:13): [True: 122, False: 41.7k]
  ------------------
15925|  37.6k|            case 0x6E:
  ------------------
  |  Branch (15925:13): [True: 72, False: 41.8k]
  ------------------
15926|  37.8k|            case 0x6F:
  ------------------
  |  Branch (15926:13): [True: 109, False: 41.8k]
  ------------------
15927|  37.9k|            case 0x70:
  ------------------
  |  Branch (15927:13): [True: 115, False: 41.7k]
  ------------------
15928|  37.9k|            case 0x71:
  ------------------
  |  Branch (15928:13): [True: 80, False: 41.8k]
  ------------------
15929|  38.0k|            case 0x72:
  ------------------
  |  Branch (15929:13): [True: 96, False: 41.8k]
  ------------------
15930|  38.1k|            case 0x73:
  ------------------
  |  Branch (15930:13): [True: 72, False: 41.8k]
  ------------------
15931|  38.2k|            case 0x74:
  ------------------
  |  Branch (15931:13): [True: 117, False: 41.7k]
  ------------------
15932|  38.3k|            case 0x75:
  ------------------
  |  Branch (15932:13): [True: 70, False: 41.8k]
  ------------------
15933|  38.4k|            case 0x76:
  ------------------
  |  Branch (15933:13): [True: 68, False: 41.8k]
  ------------------
15934|  38.6k|            case 0x77:
  ------------------
  |  Branch (15934:13): [True: 265, False: 41.6k]
  ------------------
15935|  38.6k|            {
15936|  38.6k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
15937|  38.4k|            }
15938|       |
15939|  1.27k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15939:13): [True: 1.27k, False: 40.6k]
  ------------------
15940|  1.27k|            {
15941|  1.27k|                std::uint8_t len{};
15942|  1.27k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15942:24): [True: 1.27k, False: 8]
  |  Branch (15942:43): [True: 1.23k, False: 36]
  ------------------
15943|  38.4k|            }
15944|       |
15945|  1.17k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15945:13): [True: 1.17k, False: 40.7k]
  ------------------
15946|  1.17k|            {
15947|  1.17k|                std::uint16_t len{};
15948|  1.17k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15948:24): [True: 1.16k, False: 10]
  |  Branch (15948:43): [True: 1.10k, False: 62]
  ------------------
15949|  38.4k|            }
15950|       |
15951|    255|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15951:13): [True: 255, False: 41.6k]
  ------------------
15952|    255|            {
15953|    255|                std::uint32_t len{};
15954|    255|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15954:24): [True: 243, False: 12]
  |  Branch (15954:43): [True: 178, False: 65]
  ------------------
15955|  38.4k|            }
15956|       |
15957|    488|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15957:13): [True: 488, False: 41.4k]
  ------------------
15958|    488|            {
15959|    488|                std::uint64_t len{};
15960|    488|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15960:24): [True: 472, False: 16]
  |  Branch (15960:43): [True: 345, False: 127]
  ------------------
15961|  38.4k|            }
15962|       |
15963|     33|            default:
  ------------------
  |  Branch (15963:13): [True: 33, False: 41.8k]
  ------------------
15964|     33|            {
15965|     33|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (15965:133): [True: 30, False: 3]
  ------------------
15966|  38.4k|            }
15967|  41.9k|        }
15968|  41.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIjEEbT_RSC_:
18910|  38.9k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  38.9k|        return get_bytes(len, "string", result);
18921|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|  38.9k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  38.9k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  51.7k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 13.0k, False: 38.7k]
  ------------------
19003|  13.0k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  13.0k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 13.0k, False: 44]
  ------------------
19007|  13.0k|                                       ? static_cast<std::size_t>(len)
19008|  13.0k|                                       : chunk_size;
19009|  13.0k|            const std::size_t old_size = result.size();
19010|  13.0k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  13.0k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  13.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 13.0k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  13.0k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  13.0k|            chars_read += bytes_read;
19018|  13.0k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  13.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 225, False: 12.8k]
  |  |  ------------------
  ------------------
19019|    225|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    225|                result.resize(old_size + bytes_read);
19024|    225|                ++chars_read;
19025|    225|                current = char_traits<char_type>::eof();
19026|    225|                return unexpect_eof(context);
19027|    225|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  12.8k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  12.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 12.8k, False: 0]
  ------------------
19030|  12.8k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  12.8k|        }
19032|  38.7k|        return true;
19033|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIhEEbT_RSC_:
18910|  1.27k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.27k|        return get_bytes(len, "string", result);
18921|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  1.27k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.27k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  2.24k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.00k, False: 1.23k]
  ------------------
19003|  1.00k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.00k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.00k, False: 0]
  ------------------
19007|  1.00k|                                       ? static_cast<std::size_t>(len)
19008|  1.00k|                                       : chunk_size;
19009|  1.00k|            const std::size_t old_size = result.size();
19010|  1.00k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.00k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.00k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.00k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.00k|            chars_read += bytes_read;
19018|  1.00k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 36, False: 970]
  |  |  ------------------
  ------------------
19019|     36|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     36|                result.resize(old_size + bytes_read);
19024|     36|                ++chars_read;
19025|     36|                current = char_traits<char_type>::eof();
19026|     36|                return unexpect_eof(context);
19027|     36|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    970|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    970|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 970, False: 0]
  ------------------
19030|    970|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    970|        }
19032|  1.23k|        return true;
19033|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberItLb0EEEbRT_:
18739|  3.70k|    {
18740|       |        // read in the original format
18741|       |
18742|  3.70k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  3.70k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.70k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  3.70k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.66k, False: 48]
  |  Branch (18746:34): [Folded, False: 3.66k]
  |  Branch (18746:57): [True: 0, False: 3.66k]
  ------------------
18747|  3.66k|        {
18748|  3.66k|            byte_swap(result);
18749|  3.66k|        }
18750|  3.70k|        return true;
18751|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toItEEbRT_PKc:
18667|  3.70k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  3.70k|        auto new_chars_read = ia.get_elements(&dest);
18671|  3.70k|        chars_read += new_chars_read;
18672|  3.70k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  3.70k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 48, False: 3.66k]
  |  |  ------------------
  ------------------
18673|     48|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     48|            ++chars_read;
18676|     48|            static_cast<void>(report_eof(context));
18677|     48|            return false;
18678|     48|        }
18679|  3.66k|        return true;
18680|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsItEEmPT_m:
 8507|  3.70k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  3.70k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  3.70k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  3.70k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 48, False: 3.66k]
  |  |  ------------------
  ------------------
 8513|     48|        {
 8514|     48|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     48|        }
 8516|  3.70k|        return res;
 8517|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapItEEvRT_:
18698|  3.66k|    {
18699|  3.66k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.66k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  7.32k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.66k, False: 3.66k]
  ------------------
18715|  3.66k|            {
18716|  3.66k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.66k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.66k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringItEEbT_RSC_:
18910|  1.16k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.16k|        return get_bytes(len, "string", result);
18921|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|  1.16k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.16k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.69k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 594, False: 1.10k]
  ------------------
19003|    594|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    594|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 574, False: 20]
  ------------------
19007|    594|                                       ? static_cast<std::size_t>(len)
19008|    594|                                       : chunk_size;
19009|    594|            const std::size_t old_size = result.size();
19010|    594|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    594|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    594|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 594, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    594|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    594|            chars_read += bytes_read;
19018|    594|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    594|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 62, False: 532]
  |  |  ------------------
  ------------------
19019|     62|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     62|                result.resize(old_size + bytes_read);
19024|     62|                ++chars_read;
19025|     62|                current = char_traits<char_type>::eof();
19026|     62|                return unexpect_eof(context);
19027|     62|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    532|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    532|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 532, False: 0]
  ------------------
19030|    532|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    532|        }
19032|  1.10k|        return true;
19033|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIjLb0EEEbRT_:
18739|  1.73k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.73k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.73k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.73k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.66k, False: 63]
  |  Branch (18746:34): [Folded, False: 1.66k]
  |  Branch (18746:57): [True: 0, False: 1.66k]
  ------------------
18747|  1.66k|        {
18748|  1.66k|            byte_swap(result);
18749|  1.66k|        }
18750|  1.73k|        return true;
18751|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIjEEbRT_PKc:
18667|  1.73k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.73k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.73k|        chars_read += new_chars_read;
18672|  1.73k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 63, False: 1.66k]
  |  |  ------------------
  ------------------
18673|     63|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     63|            ++chars_read;
18676|     63|            static_cast<void>(report_eof(context));
18677|     63|            return false;
18678|     63|        }
18679|  1.66k|        return true;
18680|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIjEEmPT_m:
 8507|  1.73k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.73k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.73k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 63, False: 1.66k]
  |  |  ------------------
  ------------------
 8513|     63|        {
 8514|     63|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     63|        }
 8516|  1.73k|        return res;
 8517|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIjEEvRT_:
18698|  1.66k|    {
18699|  1.66k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.66k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.00k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.33k, False: 1.66k]
  ------------------
18715|  3.33k|            {
18716|  3.33k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.33k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.66k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberImLb0EEEbRT_:
18739|  2.89k|    {
18740|       |        // read in the original format
18741|       |
18742|  2.89k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  2.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 2.89k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  2.89k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 2.81k, False: 80]
  |  Branch (18746:34): [Folded, False: 2.81k]
  |  Branch (18746:57): [True: 0, False: 2.81k]
  ------------------
18747|  2.81k|        {
18748|  2.81k|            byte_swap(result);
18749|  2.81k|        }
18750|  2.89k|        return true;
18751|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringImEEbT_RSC_:
18910|    472|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    472|        return get_bytes(len, "string", result);
18921|    472|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesImSC_EEbT_PKcRT0_:
18998|    472|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    472|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    619|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 274, False: 345]
  ------------------
19003|    274|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    274|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 166, False: 108]
  ------------------
19007|    274|                                       ? static_cast<std::size_t>(len)
19008|    274|                                       : chunk_size;
19009|    274|            const std::size_t old_size = result.size();
19010|    274|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    274|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    274|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 274, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    274|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    274|            chars_read += bytes_read;
19018|    274|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    274|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 127, False: 147]
  |  |  ------------------
  ------------------
19019|    127|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    127|                result.resize(old_size + bytes_read);
19024|    127|                ++chars_read;
19025|    127|                current = char_traits<char_type>::eof();
19026|    127|                return unexpect_eof(context);
19027|    127|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    147|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    147|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 147, False: 0]
  ------------------
19030|    147|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    147|        }
19032|    345|        return true;
19033|    472|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE16parse_cbor_valueEbNS1_18cbor_tag_handler_tERbSM_:
15503|   211k|    {
15504|   211k|        tag_pending = false;
15505|   211k|        item_read = false;
15506|       |
15507|   211k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (15507:17): [True: 125k, False: 85.9k]
  ------------------
15508|   211k|        {
15509|       |            // EOF
15510|  1.03k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (15510:13): [True: 1.03k, False: 209k]
  ------------------
15511|  1.03k|                return unexpect_eof("value");
15512|       |
15513|       |            // Integer 0x00..0x17 (0..23)
15514|  9.29k|            case 0x00:
  ------------------
  |  Branch (15514:13): [True: 9.29k, False: 201k]
  ------------------
15515|  10.3k|            case 0x01:
  ------------------
  |  Branch (15515:13): [True: 1.10k, False: 209k]
  ------------------
15516|  10.9k|            case 0x02:
  ------------------
  |  Branch (15516:13): [True: 557, False: 210k]
  ------------------
15517|  11.3k|            case 0x03:
  ------------------
  |  Branch (15517:13): [True: 413, False: 210k]
  ------------------
15518|  12.0k|            case 0x04:
  ------------------
  |  Branch (15518:13): [True: 686, False: 210k]
  ------------------
15519|  12.6k|            case 0x05:
  ------------------
  |  Branch (15519:13): [True: 604, False: 210k]
  ------------------
15520|  13.4k|            case 0x06:
  ------------------
  |  Branch (15520:13): [True: 752, False: 210k]
  ------------------
15521|  13.7k|            case 0x07:
  ------------------
  |  Branch (15521:13): [True: 329, False: 210k]
  ------------------
15522|  14.6k|            case 0x08:
  ------------------
  |  Branch (15522:13): [True: 920, False: 210k]
  ------------------
15523|  15.1k|            case 0x09:
  ------------------
  |  Branch (15523:13): [True: 508, False: 210k]
  ------------------
15524|  15.6k|            case 0x0A:
  ------------------
  |  Branch (15524:13): [True: 465, False: 210k]
  ------------------
15525|  15.9k|            case 0x0B:
  ------------------
  |  Branch (15525:13): [True: 288, False: 210k]
  ------------------
15526|  16.2k|            case 0x0C:
  ------------------
  |  Branch (15526:13): [True: 329, False: 210k]
  ------------------
15527|  16.6k|            case 0x0D:
  ------------------
  |  Branch (15527:13): [True: 373, False: 210k]
  ------------------
15528|  17.0k|            case 0x0E:
  ------------------
  |  Branch (15528:13): [True: 470, False: 210k]
  ------------------
15529|  17.4k|            case 0x0F:
  ------------------
  |  Branch (15529:13): [True: 393, False: 210k]
  ------------------
15530|  18.0k|            case 0x10:
  ------------------
  |  Branch (15530:13): [True: 591, False: 210k]
  ------------------
15531|  18.6k|            case 0x11:
  ------------------
  |  Branch (15531:13): [True: 599, False: 210k]
  ------------------
15532|  19.0k|            case 0x12:
  ------------------
  |  Branch (15532:13): [True: 358, False: 210k]
  ------------------
15533|  19.3k|            case 0x13:
  ------------------
  |  Branch (15533:13): [True: 298, False: 210k]
  ------------------
15534|  19.8k|            case 0x14:
  ------------------
  |  Branch (15534:13): [True: 534, False: 210k]
  ------------------
15535|  20.1k|            case 0x15:
  ------------------
  |  Branch (15535:13): [True: 260, False: 210k]
  ------------------
15536|  20.5k|            case 0x16:
  ------------------
  |  Branch (15536:13): [True: 471, False: 210k]
  ------------------
15537|  20.9k|            case 0x17:
  ------------------
  |  Branch (15537:13): [True: 360, False: 210k]
  ------------------
15538|  20.9k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
15539|       |
15540|    750|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15540:13): [True: 750, False: 210k]
  ------------------
15541|    750|            {
15542|    750|                std::uint8_t number{};
15543|    750|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15543:24): [True: 748, False: 2]
  |  Branch (15543:46): [True: 748, False: 0]
  ------------------
15544|  20.5k|            }
15545|       |
15546|    371|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (15546:13): [True: 371, False: 210k]
  ------------------
15547|    371|            {
15548|    371|                std::uint16_t number{};
15549|    371|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15549:24): [True: 367, False: 4]
  |  Branch (15549:46): [True: 367, False: 0]
  ------------------
15550|  20.5k|            }
15551|       |
15552|    325|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (15552:13): [True: 325, False: 210k]
  ------------------
15553|    325|            {
15554|    325|                std::uint32_t number{};
15555|    325|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15555:24): [True: 319, False: 6]
  |  Branch (15555:46): [True: 319, False: 0]
  ------------------
15556|  20.5k|            }
15557|       |
15558|    656|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (15558:13): [True: 656, False: 210k]
  ------------------
15559|    656|            {
15560|    656|                std::uint64_t number{};
15561|    656|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15561:24): [True: 644, False: 12]
  |  Branch (15561:46): [True: 644, False: 0]
  ------------------
15562|  20.5k|            }
15563|       |
15564|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
15565|  1.14k|            case 0x20:
  ------------------
  |  Branch (15565:13): [True: 1.14k, False: 209k]
  ------------------
15566|  1.79k|            case 0x21:
  ------------------
  |  Branch (15566:13): [True: 647, False: 210k]
  ------------------
15567|  2.51k|            case 0x22:
  ------------------
  |  Branch (15567:13): [True: 720, False: 210k]
  ------------------
15568|  3.22k|            case 0x23:
  ------------------
  |  Branch (15568:13): [True: 714, False: 210k]
  ------------------
15569|  3.60k|            case 0x24:
  ------------------
  |  Branch (15569:13): [True: 382, False: 210k]
  ------------------
15570|  4.42k|            case 0x25:
  ------------------
  |  Branch (15570:13): [True: 817, False: 210k]
  ------------------
15571|  4.84k|            case 0x26:
  ------------------
  |  Branch (15571:13): [True: 421, False: 210k]
  ------------------
15572|  5.58k|            case 0x27:
  ------------------
  |  Branch (15572:13): [True: 740, False: 210k]
  ------------------
15573|  6.18k|            case 0x28:
  ------------------
  |  Branch (15573:13): [True: 602, False: 210k]
  ------------------
15574|  6.75k|            case 0x29:
  ------------------
  |  Branch (15574:13): [True: 562, False: 210k]
  ------------------
15575|  7.38k|            case 0x2A:
  ------------------
  |  Branch (15575:13): [True: 635, False: 210k]
  ------------------
15576|  7.99k|            case 0x2B:
  ------------------
  |  Branch (15576:13): [True: 613, False: 210k]
  ------------------
15577|  8.39k|            case 0x2C:
  ------------------
  |  Branch (15577:13): [True: 396, False: 210k]
  ------------------
15578|  9.19k|            case 0x2D:
  ------------------
  |  Branch (15578:13): [True: 805, False: 210k]
  ------------------
15579|  9.62k|            case 0x2E:
  ------------------
  |  Branch (15579:13): [True: 424, False: 210k]
  ------------------
15580|  10.4k|            case 0x2F:
  ------------------
  |  Branch (15580:13): [True: 799, False: 210k]
  ------------------
15581|  11.3k|            case 0x30:
  ------------------
  |  Branch (15581:13): [True: 909, False: 210k]
  ------------------
15582|  11.8k|            case 0x31:
  ------------------
  |  Branch (15582:13): [True: 538, False: 210k]
  ------------------
15583|  12.4k|            case 0x32:
  ------------------
  |  Branch (15583:13): [True: 551, False: 210k]
  ------------------
15584|  12.8k|            case 0x33:
  ------------------
  |  Branch (15584:13): [True: 416, False: 210k]
  ------------------
15585|  13.4k|            case 0x34:
  ------------------
  |  Branch (15585:13): [True: 622, False: 210k]
  ------------------
15586|  13.8k|            case 0x35:
  ------------------
  |  Branch (15586:13): [True: 371, False: 210k]
  ------------------
15587|  14.2k|            case 0x36:
  ------------------
  |  Branch (15587:13): [True: 450, False: 210k]
  ------------------
15588|  14.7k|            case 0x37:
  ------------------
  |  Branch (15588:13): [True: 514, False: 210k]
  ------------------
15589|  14.7k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
15590|       |
15591|    470|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15591:13): [True: 470, False: 210k]
  ------------------
15592|    470|                return get_cbor_negative_integer<std::uint8_t>();
15593|       |
15594|    486|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (15594:13): [True: 486, False: 210k]
  ------------------
15595|    486|                return get_cbor_negative_integer<std::uint16_t>();
15596|       |
15597|    336|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (15597:13): [True: 336, False: 210k]
  ------------------
15598|    336|                return get_cbor_negative_integer<std::uint32_t>();
15599|       |
15600|    827|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (15600:13): [True: 827, False: 210k]
  ------------------
15601|    827|                return get_cbor_negative_integer<std::uint64_t>();
15602|       |
15603|       |            // Binary data (0x00..0x17 bytes follow)
15604|  19.7k|            case 0x40:
  ------------------
  |  Branch (15604:13): [True: 19.7k, False: 191k]
  ------------------
15605|  21.0k|            case 0x41:
  ------------------
  |  Branch (15605:13): [True: 1.26k, False: 209k]
  ------------------
15606|  21.3k|            case 0x42:
  ------------------
  |  Branch (15606:13): [True: 351, False: 210k]
  ------------------
15607|  21.5k|            case 0x43:
  ------------------
  |  Branch (15607:13): [True: 154, False: 210k]
  ------------------
15608|  21.6k|            case 0x44:
  ------------------
  |  Branch (15608:13): [True: 119, False: 210k]
  ------------------
15609|  21.8k|            case 0x45:
  ------------------
  |  Branch (15609:13): [True: 180, False: 210k]
  ------------------
15610|  21.9k|            case 0x46:
  ------------------
  |  Branch (15610:13): [True: 138, False: 210k]
  ------------------
15611|  22.0k|            case 0x47:
  ------------------
  |  Branch (15611:13): [True: 112, False: 210k]
  ------------------
15612|  22.2k|            case 0x48:
  ------------------
  |  Branch (15612:13): [True: 149, False: 210k]
  ------------------
15613|  22.3k|            case 0x49:
  ------------------
  |  Branch (15613:13): [True: 94, False: 210k]
  ------------------
15614|  22.4k|            case 0x4A:
  ------------------
  |  Branch (15614:13): [True: 104, False: 210k]
  ------------------
15615|  22.5k|            case 0x4B:
  ------------------
  |  Branch (15615:13): [True: 107, False: 210k]
  ------------------
15616|  22.6k|            case 0x4C:
  ------------------
  |  Branch (15616:13): [True: 115, False: 210k]
  ------------------
15617|  22.7k|            case 0x4D:
  ------------------
  |  Branch (15617:13): [True: 77, False: 210k]
  ------------------
15618|  22.8k|            case 0x4E:
  ------------------
  |  Branch (15618:13): [True: 69, False: 210k]
  ------------------
15619|  22.8k|            case 0x4F:
  ------------------
  |  Branch (15619:13): [True: 46, False: 210k]
  ------------------
15620|  22.9k|            case 0x50:
  ------------------
  |  Branch (15620:13): [True: 71, False: 210k]
  ------------------
15621|  22.9k|            case 0x51:
  ------------------
  |  Branch (15621:13): [True: 48, False: 210k]
  ------------------
15622|  23.0k|            case 0x52:
  ------------------
  |  Branch (15622:13): [True: 48, False: 210k]
  ------------------
15623|  23.0k|            case 0x53:
  ------------------
  |  Branch (15623:13): [True: 51, False: 210k]
  ------------------
15624|  23.1k|            case 0x54:
  ------------------
  |  Branch (15624:13): [True: 41, False: 210k]
  ------------------
15625|  23.1k|            case 0x55:
  ------------------
  |  Branch (15625:13): [True: 44, False: 210k]
  ------------------
15626|  23.2k|            case 0x56:
  ------------------
  |  Branch (15626:13): [True: 52, False: 210k]
  ------------------
15627|  23.2k|            case 0x57:
  ------------------
  |  Branch (15627:13): [True: 60, False: 210k]
  ------------------
15628|  24.1k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15628:13): [True: 911, False: 210k]
  ------------------
15629|  24.8k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15629:13): [True: 632, False: 210k]
  ------------------
15630|  25.2k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15630:13): [True: 445, False: 210k]
  ------------------
15631|  25.6k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15631:13): [True: 422, False: 210k]
  ------------------
15632|  26.3k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (15632:13): [True: 717, False: 210k]
  ------------------
15633|  26.3k|            {
15634|  26.3k|                binary_t b;
15635|  26.3k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15635:24): [True: 25.8k, False: 531]
  |  Branch (15635:46): [True: 25.8k, False: 0]
  ------------------
15636|  25.6k|            }
15637|       |
15638|       |            // UTF-8 string (0x00..0x17 bytes follow)
15639|  5.95k|            case 0x60:
  ------------------
  |  Branch (15639:13): [True: 5.95k, False: 205k]
  ------------------
15640|  7.05k|            case 0x61:
  ------------------
  |  Branch (15640:13): [True: 1.10k, False: 209k]
  ------------------
15641|  7.48k|            case 0x62:
  ------------------
  |  Branch (15641:13): [True: 428, False: 210k]
  ------------------
15642|  7.74k|            case 0x63:
  ------------------
  |  Branch (15642:13): [True: 261, False: 210k]
  ------------------
15643|  7.96k|            case 0x64:
  ------------------
  |  Branch (15643:13): [True: 223, False: 210k]
  ------------------
15644|  8.31k|            case 0x65:
  ------------------
  |  Branch (15644:13): [True: 350, False: 210k]
  ------------------
15645|  8.56k|            case 0x66:
  ------------------
  |  Branch (15645:13): [True: 251, False: 210k]
  ------------------
15646|  8.71k|            case 0x67:
  ------------------
  |  Branch (15646:13): [True: 147, False: 210k]
  ------------------
15647|  8.95k|            case 0x68:
  ------------------
  |  Branch (15647:13): [True: 238, False: 210k]
  ------------------
15648|  9.05k|            case 0x69:
  ------------------
  |  Branch (15648:13): [True: 102, False: 210k]
  ------------------
15649|  9.19k|            case 0x6A:
  ------------------
  |  Branch (15649:13): [True: 141, False: 210k]
  ------------------
15650|  9.31k|            case 0x6B:
  ------------------
  |  Branch (15650:13): [True: 119, False: 210k]
  ------------------
15651|  9.51k|            case 0x6C:
  ------------------
  |  Branch (15651:13): [True: 197, False: 210k]
  ------------------
15652|  9.62k|            case 0x6D:
  ------------------
  |  Branch (15652:13): [True: 112, False: 210k]
  ------------------
15653|  9.68k|            case 0x6E:
  ------------------
  |  Branch (15653:13): [True: 59, False: 210k]
  ------------------
15654|  9.76k|            case 0x6F:
  ------------------
  |  Branch (15654:13): [True: 82, False: 210k]
  ------------------
15655|  9.84k|            case 0x70:
  ------------------
  |  Branch (15655:13): [True: 84, False: 210k]
  ------------------
15656|  9.91k|            case 0x71:
  ------------------
  |  Branch (15656:13): [True: 69, False: 210k]
  ------------------
15657|  10.0k|            case 0x72:
  ------------------
  |  Branch (15657:13): [True: 83, False: 210k]
  ------------------
15658|  10.0k|            case 0x73:
  ------------------
  |  Branch (15658:13): [True: 67, False: 210k]
  ------------------
15659|  10.1k|            case 0x74:
  ------------------
  |  Branch (15659:13): [True: 109, False: 210k]
  ------------------
15660|  10.2k|            case 0x75:
  ------------------
  |  Branch (15660:13): [True: 62, False: 210k]
  ------------------
15661|  10.3k|            case 0x76:
  ------------------
  |  Branch (15661:13): [True: 63, False: 210k]
  ------------------
15662|  10.4k|            case 0x77:
  ------------------
  |  Branch (15662:13): [True: 120, False: 210k]
  ------------------
15663|  11.5k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15663:13): [True: 1.13k, False: 209k]
  ------------------
15664|  12.5k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15664:13): [True: 996, False: 210k]
  ------------------
15665|  12.8k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15665:13): [True: 255, False: 210k]
  ------------------
15666|  13.2k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15666:13): [True: 449, False: 210k]
  ------------------
15667|  13.7k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15667:13): [True: 537, False: 210k]
  ------------------
15668|  13.7k|            {
15669|  13.7k|                string_t s;
15670|  13.7k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (15670:24): [True: 13.2k, False: 526]
  |  Branch (15670:46): [True: 13.2k, False: 0]
  ------------------
15671|  13.2k|            }
15672|       |
15673|       |            // array (0x00..0x17 data items follow)
15674|  2.68k|            case 0x80:
  ------------------
  |  Branch (15674:13): [True: 2.68k, False: 208k]
  ------------------
15675|  78.1k|            case 0x81:
  ------------------
  |  Branch (15675:13): [True: 75.4k, False: 135k]
  ------------------
15676|  78.5k|            case 0x82:
  ------------------
  |  Branch (15676:13): [True: 474, False: 210k]
  ------------------
15677|  79.0k|            case 0x83:
  ------------------
  |  Branch (15677:13): [True: 509, False: 210k]
  ------------------
15678|  79.4k|            case 0x84:
  ------------------
  |  Branch (15678:13): [True: 312, False: 210k]
  ------------------
15679|  79.6k|            case 0x85:
  ------------------
  |  Branch (15679:13): [True: 254, False: 210k]
  ------------------
15680|  79.9k|            case 0x86:
  ------------------
  |  Branch (15680:13): [True: 329, False: 210k]
  ------------------
15681|  80.4k|            case 0x87:
  ------------------
  |  Branch (15681:13): [True: 459, False: 210k]
  ------------------
15682|  80.7k|            case 0x88:
  ------------------
  |  Branch (15682:13): [True: 332, False: 210k]
  ------------------
15683|  81.0k|            case 0x89:
  ------------------
  |  Branch (15683:13): [True: 254, False: 210k]
  ------------------
15684|  81.3k|            case 0x8A:
  ------------------
  |  Branch (15684:13): [True: 356, False: 210k]
  ------------------
15685|  81.6k|            case 0x8B:
  ------------------
  |  Branch (15685:13): [True: 303, False: 210k]
  ------------------
15686|  81.9k|            case 0x8C:
  ------------------
  |  Branch (15686:13): [True: 256, False: 210k]
  ------------------
15687|  82.2k|            case 0x8D:
  ------------------
  |  Branch (15687:13): [True: 319, False: 210k]
  ------------------
15688|  82.6k|            case 0x8E:
  ------------------
  |  Branch (15688:13): [True: 343, False: 210k]
  ------------------
15689|  82.9k|            case 0x8F:
  ------------------
  |  Branch (15689:13): [True: 377, False: 210k]
  ------------------
15690|  83.4k|            case 0x90:
  ------------------
  |  Branch (15690:13): [True: 487, False: 210k]
  ------------------
15691|  83.9k|            case 0x91:
  ------------------
  |  Branch (15691:13): [True: 481, False: 210k]
  ------------------
15692|  84.3k|            case 0x92:
  ------------------
  |  Branch (15692:13): [True: 349, False: 210k]
  ------------------
15693|  84.6k|            case 0x93:
  ------------------
  |  Branch (15693:13): [True: 358, False: 210k]
  ------------------
15694|  84.9k|            case 0x94:
  ------------------
  |  Branch (15694:13): [True: 281, False: 210k]
  ------------------
15695|  85.2k|            case 0x95:
  ------------------
  |  Branch (15695:13): [True: 257, False: 210k]
  ------------------
15696|  85.6k|            case 0x96:
  ------------------
  |  Branch (15696:13): [True: 485, False: 210k]
  ------------------
15697|  86.2k|            case 0x97:
  ------------------
  |  Branch (15697:13): [True: 568, False: 210k]
  ------------------
15698|  86.2k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15699|       |
15700|    313|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15700:13): [True: 313, False: 210k]
  ------------------
15701|    819|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15701:13): [True: 506, False: 210k]
  ------------------
15702|  1.08k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15702:13): [True: 263, False: 210k]
  ------------------
15703|  1.35k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15703:13): [True: 274, False: 210k]
  ------------------
15704|  1.35k|            {
15705|  1.35k|                std::uint64_t len{};
15706|  1.35k|                std::size_t size{};
15707|  1.35k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "array") && enter_array(size);
  ------------------
  |  Branch (15707:24): [True: 1.31k, False: 39]
  |  Branch (15707:50): [True: 1.31k, False: 1]
  |  Branch (15707:97): [True: 1.19k, False: 125]
  ------------------
15708|  1.08k|            }
15709|       |
15710|  6.84k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (15710:13): [True: 6.84k, False: 204k]
  ------------------
15711|  6.84k|                return enter_array(detail::unknown_size());
15712|       |
15713|       |            // map (0x00..0x17 pairs of data items follow)
15714|  2.06k|            case 0xA0:
  ------------------
  |  Branch (15714:13): [True: 2.06k, False: 208k]
  ------------------
15715|  10.6k|            case 0xA1:
  ------------------
  |  Branch (15715:13): [True: 8.61k, False: 202k]
  ------------------
15716|  12.2k|            case 0xA2:
  ------------------
  |  Branch (15716:13): [True: 1.61k, False: 209k]
  ------------------
15717|  12.8k|            case 0xA3:
  ------------------
  |  Branch (15717:13): [True: 511, False: 210k]
  ------------------
15718|  13.0k|            case 0xA4:
  ------------------
  |  Branch (15718:13): [True: 280, False: 210k]
  ------------------
15719|  13.3k|            case 0xA5:
  ------------------
  |  Branch (15719:13): [True: 234, False: 210k]
  ------------------
15720|  13.6k|            case 0xA6:
  ------------------
  |  Branch (15720:13): [True: 379, False: 210k]
  ------------------
15721|  13.9k|            case 0xA7:
  ------------------
  |  Branch (15721:13): [True: 262, False: 210k]
  ------------------
15722|  14.5k|            case 0xA8:
  ------------------
  |  Branch (15722:13): [True: 547, False: 210k]
  ------------------
15723|  14.7k|            case 0xA9:
  ------------------
  |  Branch (15723:13): [True: 252, False: 210k]
  ------------------
15724|  15.0k|            case 0xAA:
  ------------------
  |  Branch (15724:13): [True: 340, False: 210k]
  ------------------
15725|  15.3k|            case 0xAB:
  ------------------
  |  Branch (15725:13): [True: 272, False: 210k]
  ------------------
15726|  15.5k|            case 0xAC:
  ------------------
  |  Branch (15726:13): [True: 209, False: 210k]
  ------------------
15727|  15.8k|            case 0xAD:
  ------------------
  |  Branch (15727:13): [True: 222, False: 210k]
  ------------------
15728|  16.0k|            case 0xAE:
  ------------------
  |  Branch (15728:13): [True: 228, False: 210k]
  ------------------
15729|  16.3k|            case 0xAF:
  ------------------
  |  Branch (15729:13): [True: 362, False: 210k]
  ------------------
15730|  16.6k|            case 0xB0:
  ------------------
  |  Branch (15730:13): [True: 297, False: 210k]
  ------------------
15731|  17.2k|            case 0xB1:
  ------------------
  |  Branch (15731:13): [True: 517, False: 210k]
  ------------------
15732|  17.4k|            case 0xB2:
  ------------------
  |  Branch (15732:13): [True: 236, False: 210k]
  ------------------
15733|  17.6k|            case 0xB3:
  ------------------
  |  Branch (15733:13): [True: 241, False: 210k]
  ------------------
15734|  18.0k|            case 0xB4:
  ------------------
  |  Branch (15734:13): [True: 349, False: 210k]
  ------------------
15735|  18.1k|            case 0xB5:
  ------------------
  |  Branch (15735:13): [True: 110, False: 210k]
  ------------------
15736|  18.4k|            case 0xB6:
  ------------------
  |  Branch (15736:13): [True: 305, False: 210k]
  ------------------
15737|  18.8k|            case 0xB7:
  ------------------
  |  Branch (15737:13): [True: 378, False: 210k]
  ------------------
15738|  18.8k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15739|       |
15740|    346|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15740:13): [True: 346, False: 210k]
  ------------------
15741|    828|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15741:13): [True: 482, False: 210k]
  ------------------
15742|    934|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15742:13): [True: 106, False: 210k]
  ------------------
15743|  1.16k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15743:13): [True: 232, False: 210k]
  ------------------
15744|  1.16k|            {
15745|  1.16k|                std::uint64_t len{};
15746|  1.16k|                std::size_t size{};
15747|  1.16k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (15747:24): [True: 1.12k, False: 39]
  |  Branch (15747:50): [True: 1.12k, False: 1]
  |  Branch (15747:95): [True: 1.03k, False: 93]
  ------------------
15748|    934|            }
15749|       |
15750|  1.05k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (15750:13): [True: 1.05k, False: 209k]
  ------------------
15751|  1.05k|                return enter_object(detail::unknown_size());
15752|       |
15753|      2|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (15753:13): [True: 2, False: 211k]
  ------------------
15754|      4|            case 0xC1:
  ------------------
  |  Branch (15754:13): [True: 2, False: 211k]
  ------------------
15755|      5|            case 0xC2:
  ------------------
  |  Branch (15755:13): [True: 1, False: 211k]
  ------------------
15756|      6|            case 0xC3:
  ------------------
  |  Branch (15756:13): [True: 1, False: 211k]
  ------------------
15757|      9|            case 0xC4:
  ------------------
  |  Branch (15757:13): [True: 3, False: 211k]
  ------------------
15758|     10|            case 0xC5:
  ------------------
  |  Branch (15758:13): [True: 1, False: 211k]
  ------------------
15759|     12|            case 0xC6:
  ------------------
  |  Branch (15759:13): [True: 2, False: 211k]
  ------------------
15760|     13|            case 0xC7:
  ------------------
  |  Branch (15760:13): [True: 1, False: 211k]
  ------------------
15761|     14|            case 0xC8:
  ------------------
  |  Branch (15761:13): [True: 1, False: 211k]
  ------------------
15762|     16|            case 0xC9:
  ------------------
  |  Branch (15762:13): [True: 2, False: 211k]
  ------------------
15763|     17|            case 0xCA:
  ------------------
  |  Branch (15763:13): [True: 1, False: 211k]
  ------------------
15764|     19|            case 0xCB:
  ------------------
  |  Branch (15764:13): [True: 2, False: 211k]
  ------------------
15765|     20|            case 0xCC:
  ------------------
  |  Branch (15765:13): [True: 1, False: 211k]
  ------------------
15766|     21|            case 0xCD:
  ------------------
  |  Branch (15766:13): [True: 1, False: 211k]
  ------------------
15767|     22|            case 0xCE:
  ------------------
  |  Branch (15767:13): [True: 1, False: 211k]
  ------------------
15768|     23|            case 0xCF:
  ------------------
  |  Branch (15768:13): [True: 1, False: 211k]
  ------------------
15769|     25|            case 0xD0:
  ------------------
  |  Branch (15769:13): [True: 2, False: 211k]
  ------------------
15770|     26|            case 0xD1:
  ------------------
  |  Branch (15770:13): [True: 1, False: 211k]
  ------------------
15771|     27|            case 0xD2:
  ------------------
  |  Branch (15771:13): [True: 1, False: 211k]
  ------------------
15772|     28|            case 0xD3:
  ------------------
  |  Branch (15772:13): [True: 1, False: 211k]
  ------------------
15773|     31|            case 0xD4:
  ------------------
  |  Branch (15773:13): [True: 3, False: 211k]
  ------------------
15774|     33|            case 0xD5:
  ------------------
  |  Branch (15774:13): [True: 2, False: 211k]
  ------------------
15775|     35|            case 0xD6:
  ------------------
  |  Branch (15775:13): [True: 2, False: 211k]
  ------------------
15776|     37|            case 0xD7:
  ------------------
  |  Branch (15776:13): [True: 2, False: 211k]
  ------------------
15777|     37|            {
15778|     37|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (15778:21): [True: 37, False: 0]
  ------------------
15779|     37|                {
15780|     37|                    return unexpected_byte("invalid byte", "value");
15781|     37|                }
15782|       |
15783|       |                // ignore and store: the tag value is already in the head, so
15784|       |                // there is nothing left to read here; the tagged value that
15785|       |                // follows is read by the loop in parse_cbor_internal() rather
15786|       |                // than by recursing here
15787|      0|                tag_pending = true;
15788|      0|                return true;
15789|     37|            }
15790|       |
15791|      2|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (15791:13): [True: 2, False: 211k]
  ------------------
15792|      3|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (15792:13): [True: 1, False: 211k]
  ------------------
15793|      4|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (15793:13): [True: 1, False: 211k]
  ------------------
15794|      5|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (15794:13): [True: 1, False: 211k]
  ------------------
15795|      5|            {
15796|      5|                switch (tag_handler)
15797|      5|                {
15798|      5|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (15798:21): [True: 5, False: 0]
  ------------------
15799|      5|                    {
15800|      5|                        return unexpected_byte("invalid byte", "value");
15801|      0|                    }
15802|       |
15803|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (15803:21): [True: 0, False: 5]
  ------------------
15804|      0|                    {
15805|       |                        // ignore the tag's binary subtype argument
15806|      0|                        std::uint64_t subtype_to_ignore{};
15807|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (15807:29): [True: 0, False: 0]
  ------------------
15808|      0|                        {
15809|      0|                            return false;
15810|      0|                        }
15811|       |                        // the tagged value follows; it is read by the loop in
15812|       |                        // parse_cbor_internal() rather than by recursing here
15813|      0|                        tag_pending = true;
15814|      0|                        return true;
15815|      0|                    }
15816|       |
15817|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (15817:21): [True: 0, False: 5]
  ------------------
15818|      0|                    {
15819|       |                        // use binary subtype and store in a binary container
15820|      0|                        std::uint64_t subtype{};
15821|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (15821:29): [True: 0, False: 0]
  ------------------
15822|      0|                        {
15823|      0|                            return false;
15824|      0|                        }
15825|      0|                        binary_t b;
15826|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
15827|       |
15828|      0|                        get();
15829|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
15830|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (15830:30): [True: 0, False: 0]
  |  Branch (15830:49): [True: 0, False: 0]
  |  Branch (15830:69): [True: 0, False: 0]
  ------------------
15831|      0|                        {
15832|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15832:36): [True: 0, False: 0]
  |  Branch (15832:58): [True: 0, False: 0]
  ------------------
15833|      0|                        }
15834|       |
15835|       |                        // not a byte string: the tagged value, whose first byte
15836|       |                        // was just read, is read by the caller like for ignore
15837|      0|                        tag_pending = true;
15838|      0|                        item_read = true;
15839|      0|                        return true;
15840|      0|                    }
15841|       |
15842|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (15842:21): [True: 0, False: 5]
  ------------------
15843|      0|                        JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15843:25): [Folded, False: 0]
  ------------------
15844|      0|                        return false;        // LCOV_EXCL_LINE
15845|      5|                }
15846|      5|            }
15847|       |
15848|  2.02k|            case 0xF4: // false
  ------------------
  |  Branch (15848:13): [True: 2.02k, False: 208k]
  ------------------
15849|  2.02k|                return sax->boolean(false);
15850|       |
15851|  1.80k|            case 0xF5: // true
  ------------------
  |  Branch (15851:13): [True: 1.80k, False: 209k]
  ------------------
15852|  1.80k|                return sax->boolean(true);
15853|       |
15854|  2.71k|            case 0xF6: // null
  ------------------
  |  Branch (15854:13): [True: 2.71k, False: 208k]
  ------------------
15855|  2.71k|                return sax->null();
15856|       |
15857|  5.85k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (15857:13): [True: 5.85k, False: 205k]
  ------------------
15858|  5.85k|                return get_half_float(false);
15859|       |
15860|    662|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (15860:13): [True: 662, False: 210k]
  ------------------
15861|    662|            {
15862|    662|                float number{};
15863|    662|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15863:24): [True: 651, False: 11]
  |  Branch (15863:46): [True: 651, False: 0]
  ------------------
15864|      5|            }
15865|       |
15866|  1.16k|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (15866:13): [True: 1.16k, False: 209k]
  ------------------
15867|  1.16k|            {
15868|  1.16k|                double number{};
15869|  1.16k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15869:24): [True: 1.15k, False: 13]
  |  Branch (15869:46): [True: 1.15k, False: 0]
  ------------------
15870|      5|            }
15871|       |
15872|     68|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (15872:13): [True: 68, False: 210k]
  ------------------
15873|     68|            {
15874|     68|                return unexpected_byte("invalid byte", "value");
15875|      5|            }
15876|   211k|        }
15877|   211k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIhEEbT_:
18799|    748|    {
18800|    748|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    748|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 748, False: 0]
  |  |  ------------------
  ------------------
18801|    748|        {
18802|    748|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    748|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    748|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedItEEbT_:
18799|    367|    {
18800|    367|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    367|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 367, False: 0]
  |  |  ------------------
  ------------------
18801|    367|        {
18802|    367|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    367|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    367|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIjEEbT_:
18799|    319|    {
18800|    319|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    319|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 319, False: 0]
  |  |  ------------------
  ------------------
18801|    319|        {
18802|    319|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    319|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    319|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerIhEEbv:
15467|    470|    {
15468|    470|        NumberType number{};
15469|    470|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    470|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 470]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    470|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    470|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 466, False: 4]
  |  |  ------------------
  ------------------
15478|    466|        {
15479|    466|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    466|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      4|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    470|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerItEEbv:
15467|    486|    {
15468|    486|        NumberType number{};
15469|    486|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    486|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 486]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    486|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    486|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 480, False: 6]
  |  |  ------------------
  ------------------
15478|    480|        {
15479|    480|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    480|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      6|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    486|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerIjEEbv:
15467|    336|    {
15468|    336|        NumberType number{};
15469|    336|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    336|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 336]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    336|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    336|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 328, False: 8]
  |  |  ------------------
  ------------------
15478|    328|        {
15479|    328|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    328|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      8|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    336|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerImEEbv:
15467|    827|    {
15468|    827|        NumberType number{};
15469|    827|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    827|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 827]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    827|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    827|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 648, False: 179]
  |  |  ------------------
  ------------------
15478|    648|        {
15479|    648|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    648|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|    179|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    827|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
16193|  26.3k|    {
16194|       |        // read chunks iteratively, but reject a second indefinite-length
16195|       |        // level as required by RFC 8949, Section 3.2.3
16196|  26.3k|        bool indefinite = false;
16197|       |
16198|  28.9k|        while (true)
  ------------------
  |  Branch (16198:16): [True: 28.3k, Folded]
  ------------------
16199|  28.3k|        {
16200|  28.3k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1667|  28.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 28.3k]
  |  |  ------------------
  ------------------
16201|      0|            {
16202|      0|                return false;
16203|      0|            }
16204|       |
16205|  28.3k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (16205:17): [True: 720, False: 27.6k]
  ------------------
16206|    720|            {
16207|    720|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|    720|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3, False: 717]
  |  |  ------------------
  ------------------
16208|      3|                {
16209|      3|                    return cbor_indefinite_string_error("binary array", "binary");
16210|      3|                }
16211|    717|                indefinite = true;
16212|    717|                get();
16213|    717|                continue;
16214|    720|            }
16215|       |
16216|       |            // a break marker closes the indefinite-length string; outside
16217|       |            // of one it falls through to the error below
16218|  27.6k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16218:17): [True: 1.97k, False: 25.6k]
  |  Branch (16218:31): [True: 615, False: 1.35k]
  ------------------
16219|    615|            {
16220|    615|                return true;
16221|    615|            }
16222|       |
16223|  27.0k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1667|  27.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 27.0k]
  |  |  ------------------
  ------------------
16224|      0|            {
16225|      0|                return false;
16226|      0|            }
16227|       |
16228|  27.0k|            if (!indefinite)
  ------------------
  |  Branch (16228:17): [True: 25.2k, False: 1.80k]
  ------------------
16229|  25.2k|            {
16230|  25.2k|                return true;
16231|  25.2k|            }
16232|       |
16233|  1.80k|            get();
16234|  1.80k|        }
16235|  26.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
16114|  27.0k|    {
16115|  27.0k|        switch (current)
16116|  27.0k|        {
16117|       |            // Binary data (0x00..0x17 bytes follow)
16118|  20.4k|            case 0x40:
  ------------------
  |  Branch (16118:13): [True: 20.4k, False: 6.54k]
  ------------------
16119|  22.1k|            case 0x41:
  ------------------
  |  Branch (16119:13): [True: 1.61k, False: 25.4k]
  ------------------
16120|  22.5k|            case 0x42:
  ------------------
  |  Branch (16120:13): [True: 416, False: 26.6k]
  ------------------
16121|  22.6k|            case 0x43:
  ------------------
  |  Branch (16121:13): [True: 166, False: 26.8k]
  ------------------
16122|  22.8k|            case 0x44:
  ------------------
  |  Branch (16122:13): [True: 123, False: 26.9k]
  ------------------
16123|  22.9k|            case 0x45:
  ------------------
  |  Branch (16123:13): [True: 190, False: 26.8k]
  ------------------
16124|  23.1k|            case 0x46:
  ------------------
  |  Branch (16124:13): [True: 140, False: 26.8k]
  ------------------
16125|  23.2k|            case 0x47:
  ------------------
  |  Branch (16125:13): [True: 118, False: 26.9k]
  ------------------
16126|  23.4k|            case 0x48:
  ------------------
  |  Branch (16126:13): [True: 151, False: 26.8k]
  ------------------
16127|  23.5k|            case 0x49:
  ------------------
  |  Branch (16127:13): [True: 95, False: 26.9k]
  ------------------
16128|  23.6k|            case 0x4A:
  ------------------
  |  Branch (16128:13): [True: 105, False: 26.9k]
  ------------------
16129|  23.7k|            case 0x4B:
  ------------------
  |  Branch (16129:13): [True: 115, False: 26.9k]
  ------------------
16130|  23.8k|            case 0x4C:
  ------------------
  |  Branch (16130:13): [True: 115, False: 26.9k]
  ------------------
16131|  23.9k|            case 0x4D:
  ------------------
  |  Branch (16131:13): [True: 79, False: 26.9k]
  ------------------
16132|  23.9k|            case 0x4E:
  ------------------
  |  Branch (16132:13): [True: 69, False: 26.9k]
  ------------------
16133|  24.0k|            case 0x4F:
  ------------------
  |  Branch (16133:13): [True: 55, False: 26.9k]
  ------------------
16134|  24.1k|            case 0x50:
  ------------------
  |  Branch (16134:13): [True: 77, False: 26.9k]
  ------------------
16135|  24.1k|            case 0x51:
  ------------------
  |  Branch (16135:13): [True: 50, False: 26.9k]
  ------------------
16136|  24.2k|            case 0x52:
  ------------------
  |  Branch (16136:13): [True: 54, False: 26.9k]
  ------------------
16137|  24.2k|            case 0x53:
  ------------------
  |  Branch (16137:13): [True: 52, False: 26.9k]
  ------------------
16138|  24.3k|            case 0x54:
  ------------------
  |  Branch (16138:13): [True: 43, False: 26.9k]
  ------------------
16139|  24.3k|            case 0x55:
  ------------------
  |  Branch (16139:13): [True: 53, False: 26.9k]
  ------------------
16140|  24.4k|            case 0x56:
  ------------------
  |  Branch (16140:13): [True: 53, False: 26.9k]
  ------------------
16141|  24.4k|            case 0x57:
  ------------------
  |  Branch (16141:13): [True: 61, False: 26.9k]
  ------------------
16142|  24.4k|            {
16143|  24.4k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
16144|  24.4k|            }
16145|       |
16146|    966|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (16146:13): [True: 966, False: 26.0k]
  ------------------
16147|    966|            {
16148|    966|                std::uint8_t len{};
16149|    966|                return get_number(len) &&
  ------------------
  |  Branch (16149:24): [True: 959, False: 7]
  ------------------
16150|    959|                       get_binary(len, result);
  ------------------
  |  Branch (16150:24): [True: 931, False: 28]
  ------------------
16151|  24.4k|            }
16152|       |
16153|    686|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (16153:13): [True: 686, False: 26.3k]
  ------------------
16154|    686|            {
16155|    686|                std::uint16_t len{};
16156|    686|                return get_number(len) &&
  ------------------
  |  Branch (16156:24): [True: 677, False: 9]
  ------------------
16157|    677|                       get_binary(len, result);
  ------------------
  |  Branch (16157:24): [True: 621, False: 56]
  ------------------
16158|  24.4k|            }
16159|       |
16160|    445|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (16160:13): [True: 445, False: 26.5k]
  ------------------
16161|    445|            {
16162|    445|                std::uint32_t len{};
16163|    445|                return get_number(len) &&
  ------------------
  |  Branch (16163:24): [True: 431, False: 14]
  ------------------
16164|    431|                       get_binary(len, result);
  ------------------
  |  Branch (16164:24): [True: 366, False: 65]
  ------------------
16165|  24.4k|            }
16166|       |
16167|    422|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (16167:13): [True: 422, False: 26.6k]
  ------------------
16168|    422|            {
16169|    422|                std::uint64_t len{};
16170|    422|                return get_number(len) &&
  ------------------
  |  Branch (16170:24): [True: 408, False: 14]
  ------------------
16171|    408|                       get_binary(len, result);
  ------------------
  |  Branch (16171:24): [True: 286, False: 122]
  ------------------
16172|  24.4k|            }
16173|       |
16174|     31|            default:
  ------------------
  |  Branch (16174:13): [True: 31, False: 27.0k]
  ------------------
16175|     31|            {
16176|     31|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (16176:133): [True: 31, False: 0]
  ------------------
16177|  24.4k|            }
16178|  27.0k|        }
16179|  27.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  24.9k|    {
18973|  24.9k|        return get_bytes(len, "binary", result);
18974|  24.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  24.9k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  24.9k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  28.7k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 4.06k, False: 24.6k]
  ------------------
19003|  4.06k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  4.06k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 4.02k, False: 42]
  ------------------
19007|  4.06k|                                       ? static_cast<std::size_t>(len)
19008|  4.06k|                                       : chunk_size;
19009|  4.06k|            const std::size_t old_size = result.size();
19010|  4.06k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  4.06k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  4.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 4.06k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  4.06k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  4.06k|            chars_read += bytes_read;
19018|  4.06k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  4.06k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 228, False: 3.83k]
  |  |  ------------------
  ------------------
19019|    228|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    228|                result.resize(old_size + bytes_read);
19024|    228|                ++chars_read;
19025|    228|                current = char_traits<char_type>::eof();
19026|    228|                return unexpect_eof(context);
19027|    228|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  3.83k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  3.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 3.83k, False: 0]
  ------------------
19030|  3.83k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  3.83k|        }
19032|  24.6k|        return true;
19033|  24.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    959|    {
18973|    959|        return get_bytes(len, "binary", result);
18974|    959|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    959|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    959|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.66k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 730, False: 931]
  ------------------
19003|    730|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    730|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 730, False: 0]
  ------------------
19007|    730|                                       ? static_cast<std::size_t>(len)
19008|    730|                                       : chunk_size;
19009|    730|            const std::size_t old_size = result.size();
19010|    730|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    730|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    730|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 730, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    730|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    730|            chars_read += bytes_read;
19018|    730|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    730|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 28, False: 702]
  |  |  ------------------
  ------------------
19019|     28|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     28|                result.resize(old_size + bytes_read);
19024|     28|                ++chars_read;
19025|     28|                current = char_traits<char_type>::eof();
19026|     28|                return unexpect_eof(context);
19027|     28|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    702|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    702|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 702, False: 0]
  ------------------
19030|    702|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    702|        }
19032|    931|        return true;
19033|    959|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    677|    {
18973|    677|        return get_bytes(len, "binary", result);
18974|    677|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    677|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    677|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.09k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 469, False: 621]
  ------------------
19003|    469|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    469|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 449, False: 20]
  ------------------
19007|    469|                                       ? static_cast<std::size_t>(len)
19008|    469|                                       : chunk_size;
19009|    469|            const std::size_t old_size = result.size();
19010|    469|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    469|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    469|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 469, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    469|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    469|            chars_read += bytes_read;
19018|    469|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    469|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 56, False: 413]
  |  |  ------------------
  ------------------
19019|     56|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     56|                result.resize(old_size + bytes_read);
19024|     56|                ++chars_read;
19025|     56|                current = char_traits<char_type>::eof();
19026|     56|                return unexpect_eof(context);
19027|     56|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    413|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    413|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 413, False: 0]
  ------------------
19030|    413|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    413|        }
19032|    621|        return true;
19033|    677|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryImEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    408|    {
18973|    408|        return get_bytes(len, "binary", result);
18974|    408|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    408|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    408|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    492|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 206, False: 286]
  ------------------
19003|    206|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    206|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 106, False: 100]
  ------------------
19007|    206|                                       ? static_cast<std::size_t>(len)
19008|    206|                                       : chunk_size;
19009|    206|            const std::size_t old_size = result.size();
19010|    206|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    206|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    206|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 206, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    206|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    206|            chars_read += bytes_read;
19018|    206|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    206|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 122, False: 84]
  |  |  ------------------
  ------------------
19019|    122|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    122|                result.resize(old_size + bytes_read);
19024|    122|                ++chars_read;
19025|    122|                current = char_traits<char_type>::eof();
19026|    122|                return unexpect_eof(context);
19027|    122|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|     84|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|     84|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 84, False: 0]
  ------------------
19030|     84|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|     84|        }
19032|    286|        return true;
19033|    408|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11enter_arrayEmi:
15094|  94.4k|    {
15095|  94.4k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  94.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17get_cbor_argumentERm:
16251|  2.52k|    {
16252|  2.52k|        switch (current & 0x1F)
16253|  2.52k|        {
16254|    659|            case 0x18: // 1 byte
  ------------------
  |  Branch (16254:13): [True: 659, False: 1.86k]
  ------------------
16255|    659|            {
16256|    659|                std::uint8_t n{};
16257|    659|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    659|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 659]
  |  |  ------------------
  ------------------
16258|      0|                {
16259|      0|                    return false;
16260|      0|                }
16261|    659|                value = n;
16262|    659|                return true;
16263|    659|            }
16264|       |
16265|    988|            case 0x19: // 2 bytes
  ------------------
  |  Branch (16265:13): [True: 988, False: 1.53k]
  ------------------
16266|    988|            {
16267|    988|                std::uint16_t n{};
16268|    988|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    988|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 988]
  |  |  ------------------
  ------------------
16269|      0|                {
16270|      0|                    return false;
16271|      0|                }
16272|    988|                value = n;
16273|    988|                return true;
16274|    988|            }
16275|       |
16276|    369|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (16276:13): [True: 369, False: 2.15k]
  ------------------
16277|    369|            {
16278|    369|                std::uint32_t n{};
16279|    369|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    369|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 369]
  |  |  ------------------
  ------------------
16280|      0|                {
16281|      0|                    return false;
16282|      0|                }
16283|    369|                value = n;
16284|    369|                return true;
16285|    369|            }
16286|       |
16287|    506|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (16287:13): [True: 506, False: 2.01k]
  ------------------
16288|    506|            {
16289|    506|                std::uint64_t n{};
16290|    506|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    506|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 506]
  |  |  ------------------
  ------------------
16291|      0|                {
16292|      0|                    return false;
16293|      0|                }
16294|    506|                value = n;
16295|    506|                return true;
16296|    506|            }
16297|       |
16298|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (16298:13): [True: 0, False: 2.52k]
  ------------------
16299|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (16299:17): [Folded, False: 0]
  ------------------
16300|      0|                return false;        // LCOV_EXCL_LINE
16301|  2.52k|        }
16302|  2.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE23get_cbor_container_sizeEmRmPKc:
16319|  2.44k|    {
16320|  2.44k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1667|  4.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2, False: 2.44k]
  |  |  |  Branch (1667:94): [True: 0, False: 2.44k]
  |  |  |  Branch (1667:94): [True: 2, False: 2.44k]
  |  |  ------------------
  ------------------
16321|      2|        {
16322|      2|            return container_size_error(context);
16323|      2|        }
16324|  2.44k|        result = conditional_static_cast<std::size_t>(len);
16325|  2.44k|        return true;
16326|  2.44k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE20container_size_errorEPKc:
19074|      2|    {
19075|      2|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
19076|      2|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
19077|      2|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12enter_objectEmi:
15100|  21.0k|    {
15101|  21.0k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  21.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15unexpected_byteEPKcSM_:
19130|    110|    {
19131|    110|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    110|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE14get_half_floatEb:
18845|  5.85k|    {
18846|  5.85k|        const auto byte1_raw = get();
18847|  5.85k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  5.85k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.85k]
  |  |  ------------------
  ------------------
18848|      0|        {
18849|      0|            return false;
18850|      0|        }
18851|  5.85k|        const auto byte2_raw = get();
18852|  5.85k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  5.85k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.85k]
  |  |  ------------------
  ------------------
18853|      0|        {
18854|      0|            return false;
18855|      0|        }
18856|       |
18857|  5.85k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
18858|  5.85k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
18859|       |
18860|       |        // Code from RFC 8949, Appendix D, Figure 3:
18861|       |        // As half-precision floating-point numbers were only added
18862|       |        // to IEEE 754 in 2008, today's programming platforms often
18863|       |        // still only have limited support for them. It is very
18864|       |        // easy to include at least decoding support for them even
18865|       |        // without such support. An example of a small decoder for
18866|       |        // half-precision floating-point numbers in the C language
18867|       |        // is shown in Fig. 3.
18868|  5.85k|        const auto half = little_endian
  ------------------
  |  Branch (18868:27): [True: 0, False: 5.85k]
  ------------------
18869|  5.85k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
18870|  5.85k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
18871|  5.85k|        const double val = [&half]
18872|  5.85k|        {
18873|  5.85k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  5.85k|            const unsigned int mant = half & 0x3FFu;
18875|  5.85k|            JSON_ASSERT(exp <= 31);
18876|  5.85k|            JSON_ASSERT(mant <= 1023);
18877|  5.85k|            switch (exp)
18878|  5.85k|            {
18879|  5.85k|                case 0:
18880|  5.85k|                    return std::ldexp(mant, -24);
18881|  5.85k|                case 31:
18882|  5.85k|                    return (mant == 0)
18883|  5.85k|                    ? std::numeric_limits<double>::infinity()
18884|  5.85k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  5.85k|                default:
18886|  5.85k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  5.85k|            }
18888|  5.85k|        }();
18889|  5.85k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (18889:34): [True: 3.52k, False: 2.33k]
  ------------------
18890|  5.85k|                                 ? static_cast<number_float_t>(-val)
18891|  5.85k|                                 : static_cast<number_float_t>(val), "");
18892|  5.85k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE14get_half_floatEbENKUlvE_clEv:
18872|  5.83k|        {
18873|  5.83k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  5.83k|            const unsigned int mant = half & 0x3FFu;
18875|  5.83k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2591|  5.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18875:13): [True: 5.83k, False: 0]
  ------------------
18876|  5.83k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2591|  5.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18876:13): [True: 5.83k, False: 0]
  ------------------
18877|  5.83k|            switch (exp)
18878|  5.83k|            {
18879|  1.26k|                case 0:
  ------------------
  |  Branch (18879:17): [True: 1.26k, False: 4.57k]
  ------------------
18880|  1.26k|                    return std::ldexp(mant, -24);
18881|  1.21k|                case 31:
  ------------------
  |  Branch (18881:17): [True: 1.21k, False: 4.62k]
  ------------------
18882|  1.21k|                    return (mant == 0)
  ------------------
  |  Branch (18882:28): [True: 638, False: 576]
  ------------------
18883|  1.21k|                    ? std::numeric_limits<double>::infinity()
18884|  1.21k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  3.36k|                default:
  ------------------
  |  Branch (18885:17): [True: 3.36k, False: 2.47k]
  ------------------
18886|  3.36k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  5.83k|            }
18888|  5.83k|        }();
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
18739|    662|    {
18740|       |        // read in the original format
18741|       |
18742|    662|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    662|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 662]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    662|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 651, False: 11]
  |  Branch (18746:34): [Folded, False: 651]
  |  Branch (18746:57): [True: 0, False: 651]
  ------------------
18747|    651|        {
18748|    651|            byte_swap(result);
18749|    651|        }
18750|    662|        return true;
18751|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIfEEbRT_PKc:
18667|    662|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    662|        auto new_chars_read = ia.get_elements(&dest);
18671|    662|        chars_read += new_chars_read;
18672|    662|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    662|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 651]
  |  |  ------------------
  ------------------
18673|     11|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     11|            ++chars_read;
18676|     11|            static_cast<void>(report_eof(context));
18677|     11|            return false;
18678|     11|        }
18679|    651|        return true;
18680|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIfEEmPT_m:
 8507|    662|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    662|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    662|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    662|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 651]
  |  |  ------------------
  ------------------
 8513|     11|        {
 8514|     11|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     11|        }
 8516|    662|        return res;
 8517|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIfEEvRT_:
18698|    651|    {
18699|    651|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    651|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  1.95k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 1.30k, False: 651]
  ------------------
18715|  1.30k|            {
18716|  1.30k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  1.30k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    651|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIfEEbT_:
18825|    651|    {
18826|    651|        const auto result = static_cast<number_float_t>(number);
18827|    651|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 651]
  |  |  |  Branch (1667:94): [True: 646, False: 5]
  |  |  |  Branch (1667:94): [True: 0, False: 646]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    651|        return sax->number_float(result, "");
18832|    651|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
18739|  1.16k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.16k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.16k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.16k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.15k, False: 13]
  |  Branch (18746:34): [Folded, False: 1.15k]
  |  Branch (18746:57): [True: 0, False: 1.15k]
  ------------------
18747|  1.15k|        {
18748|  1.15k|            byte_swap(result);
18749|  1.15k|        }
18750|  1.16k|        return true;
18751|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   260k|    {
18653|   260k|        ++chars_read;
18654|   260k|        return current = ia.get_character();
18655|   260k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter13get_characterEv:
 8494|   260k|    {
 8495|   260k|        auto res = sb->sbumpc();
 8496|       |        // set eof manually, as we don't use the istream interface.
 8497|   260k|        if (JSON_HEDLEY_UNLIKELY(res == std::char_traits<char>::eof()))
  ------------------
  |  | 1667|   260k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4.97k, False: 255k]
  |  |  ------------------
  ------------------
 8498|  4.97k|        {
 8499|  4.97k|            is->clear(is->rdstate() | std::ios::eofbit);
 8500|  4.97k|        }
 8501|   260k|        return res;
 8502|   260k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    398|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    398|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    398|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 116, False: 282]
  ------------------
19120|    398|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  6.72k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEED2Ev:
13881|  6.72k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEE:
 9123|  6.72k|{
 9124|  6.72k|    if (stream.rdbuf() == nullptr)
  ------------------
  |  Branch (9124:9): [True: 0, False: 6.72k]
  ------------------
 9125|      0|    {
 9126|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9127|      0|    }
 9128|  6.72k|    return input_stream_adapter(stream);
 9129|  6.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2ERNSt3__113basic_istreamIcNS3_11char_traitsIcEEEE:
 8420|  6.72k|        : is(&i), sb(i.rdbuf())
 8421|  6.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterD2Ev:
 8399|  13.4k|    {
 8400|       |        // clear stream flags; we use underlying streambuf I/O, do not
 8401|       |        // maintain ifstream flags, except eof
 8402|  13.4k|        if (is != nullptr)
  ------------------
  |  Branch (8402:13): [True: 6.72k, False: 6.72k]
  ------------------
 8403|  6.72k|        {
 8404|       |#if JSON_PRECISE_STREAM_POSITION
 8405|       |            // consume the character last returned by get_character() unless it
 8406|       |            // was given back with release_lookahead()
 8407|       |            commit_lookahead();
 8408|       |#endif
 8409|       |            // only call clear() if there is something to clear: it throws
 8410|       |            // std::ios_base::failure if the stream has exceptions() enabled
 8411|       |            // for a state bit that remains set, and a destructor must not throw
 8412|  6.72k|            if ((is->rdstate() & ~std::ios::eofbit) != 0)
  ------------------
  |  Branch (8412:17): [True: 0, False: 6.72k]
  ------------------
 8413|      0|            {
 8414|      0|                is->clear(is->rdstate() & std::ios::eofbit);
 8415|      0|            }
 8416|  6.72k|        }
 8417|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborINS2_21__list_const_iteratorIhPvEESI_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SK_SL_bbNS0_6detail18cbor_tag_handler_tENSO_15error_handler_tE:
36597|  6.72k|    {
36598|  6.72k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
36599|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterINS2_21__list_const_iteratorIhPvEESK_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  6.72k|    {
36386|  6.72k|        basic_json result;
36387|  6.72k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  6.72k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  6.72k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 6.72k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  6.72k|        return result;
36394|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEEC2ERSG_bPNS1_5lexerISG_SL_EE:
13873|  6.72k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  6.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEEC2EOSL_NS1_14input_format_tENS1_15error_handler_tE:
14944|  6.72k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  6.72k|    {
14946|  6.72k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9sax_parseEPSN_bNS1_18cbor_tag_handler_tE:
14969|  6.72k|    {
14970|  6.72k|        sax = sax_;
14971|  6.72k|        container_stack.clear();
14972|  6.72k|        bon8_pushback_size = 0;
14973|  6.72k|        bool result = false;
14974|       |
14975|  6.72k|        switch (input_format)
14976|  6.72k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 6.72k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|  6.72k|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 6.72k, False: 0]
  ------------------
14982|  6.72k|                result = parse_cbor_internal(tag_handler);
14983|  6.72k|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 6.72k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 6.72k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 6.72k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 6.72k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 6.72k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 6.72k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  6.72k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  3.69k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 3.69k, False: 0]
  |  Branch (15004:23): [True: 3.69k, False: 0]
  ------------------
15005|  3.69k|        {
15006|  3.69k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 3.69k]
  |  Branch (15006:59): [True: 0, False: 3.69k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  3.69k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 3.69k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  3.69k|            else
15016|  3.69k|            {
15017|  3.69k|                get();
15018|  3.69k|            }
15019|       |
15020|  3.69k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.69k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 91, False: 3.60k]
  |  |  ------------------
  ------------------
15021|     91|            {
15022|     91|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     91|            }
15024|  3.69k|        }
15025|       |
15026|  3.60k|        return result;
15027|  3.69k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10report_eofEPKc:
19058|  2.50k|    {
19059|  2.50k|        return sax->parse_error(chars_read, "<end of file>",
19060|  2.50k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  2.50k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  2.90k|    {
14005|  2.90k|        errored = true;
14006|  2.90k|        static_cast<void>(ex);
14007|  2.90k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.90k, False: 0]
  ------------------
14008|  2.90k|        {
14009|  2.90k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.90k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.90k|        }
14011|      0|        return false;
14012|  2.90k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17exception_messageERKSC_SQ_:
19163|  2.90k|    {
19164|  2.90k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  2.90k|        switch (input_format)
19167|  2.90k|        {
19168|  2.90k|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 2.90k, False: 0]
  ------------------
19169|  2.90k|                error_msg += "CBOR";
19170|  2.90k|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 2.90k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 2.90k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 2.90k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 2.90k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 2.90k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 2.90k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 2.90k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  2.90k|        }
19196|       |
19197|  2.90k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  2.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15enter_containerEbmm:
15082|   115k|    {
15083|   115k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   230k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 115k]
  |  |  |  Branch (1667:94): [True: 21.0k, False: 94.4k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   115k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   115k|        return true;
15090|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12start_objectEm:
13930|  21.0k|    {
13931|  21.0k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  21.0k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  21.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   115k|    {
14031|   115k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4.35k, False: 111k]
  ------------------
14032|  4.35k|        {
14033|  4.35k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  4.35k|            return &root;
14040|  4.35k|        }
14041|       |
14042|   111k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|   111k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 95.6k, False: 15.4k]
  |  Branch (14042:9): [True: 15.4k, False: 0]
  |  Branch (14042:9): [True: 111k, False: 0]
  ------------------
14043|       |
14044|   111k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 95.6k, False: 15.4k]
  ------------------
14045|  95.6k|        {
14046|  95.6k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  95.6k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  95.6k|        }
14054|       |
14055|  15.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 15.4k, False: 0]
  ------------------
14056|  15.4k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 15.4k, False: 0]
  ------------------
14057|  15.4k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  15.4k|        return object_element;
14064|  15.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterINS5_21__list_const_iteratorIhPvEESL_EEEESH_EEbRT_mPKcPT0_:
13724|   115k|{
13725|   115k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   222k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 218, False: 115k]
  |  |  |  Branch (1667:94): [True: 107k, False: 7.90k]
  |  |  |  Branch (1667:94): [True: 218, False: 107k]
  |  |  ------------------
  ------------------
13726|    218|    {
13727|    218|        return container_too_large_error(sax, len, kind, ref);
13728|    218|    }
13729|   115k|    return true;
13730|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterINS5_21__list_const_iteratorIhPvEESL_EEEESH_EEbRT_mPKcPT0_:
13718|    218|{
13719|    218|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
13720|    218|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11parse_errorINS1_12out_of_rangeEEEbmRKSC_RKT_:
14004|    220|    {
14005|    220|        errored = true;
14006|    220|        static_cast<void>(ex);
14007|    220|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 220, False: 0]
  ------------------
14008|    220|        {
14009|    220|            JSON_THROW(ex);
  ------------------
  |  | 2556|    220|    #define JSON_THROW(exception) throw exception
  ------------------
14010|    220|        }
14011|      0|        return false;
14012|    220|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11start_arrayEm:
13966|  94.4k|    {
13967|  94.4k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  94.4k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  94.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 94.4k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  94.4k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 87.4k, False: 6.96k]
  ------------------
13980|  87.4k|        {
13981|  87.4k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  87.4k|        }
13983|       |
13984|  94.4k|        return true;
13985|  94.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15container_frameC2Embm:
15051|   115k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15leave_containerEv:
15114|  88.0k|    {
15115|  88.0k|        const bool is_object = container_stack.back().is_object;
15116|  88.0k|        container_stack.pop_back();
15117|  88.0k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 13.1k, False: 74.9k]
  ------------------
15118|  88.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE10end_objectEv:
13952|  13.1k|    {
13953|  13.1k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  13.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 13.1k, False: 0]
  ------------------
13954|  13.1k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 13.1k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  13.1k|        ref_stack.back()->set_parents();
13961|  13.1k|        ref_stack.pop_back();
13962|  13.1k|        return true;
13963|  13.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE9end_arrayEv:
13988|  74.9k|    {
13989|  74.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  74.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 74.9k, False: 0]
  ------------------
13990|  74.9k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  74.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 74.9k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  74.9k|        ref_stack.back()->set_parents();
13997|  74.9k|        ref_stack.pop_back();
13998|  74.9k|        return true;
13999|  74.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE12unexpect_eofEPKc:
19041|  85.2k|    {
19042|  85.2k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  85.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.25k, False: 82.9k]
  |  |  ------------------
  ------------------
19043|  2.25k|        {
19044|  2.25k|            return report_eof(context);
19045|  2.25k|        }
19046|  82.9k|        return true;
19047|  85.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17check_string_utf8ERSC_PKc:
18941|  40.8k|    {
18942|  40.8k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 40.8k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  40.8k|        {
18944|  40.8k|            return true;
18945|  40.8k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE3keyERSC_:
13942|  27.6k|    {
13943|  27.6k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  27.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 27.6k, False: 0]
  ------------------
13944|  27.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  27.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 27.6k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  27.6k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  27.6k|        return true;
13949|  27.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIdEEbRT_PKc:
18667|  1.16k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.16k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.16k|        chars_read += new_chars_read;
18672|  1.16k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 13, False: 1.15k]
  |  |  ------------------
  ------------------
18673|     13|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     13|            ++chars_read;
18676|     13|            static_cast<void>(report_eof(context));
18677|     13|            return false;
18678|     13|        }
18679|  1.15k|        return true;
18680|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIdEEmPT_m:
 8644|  1.16k|    {
 8645|  1.16k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIdEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.16k|    {
 8725|  1.16k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  10.3k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 9.24k, False: 1.15k]
  ------------------
 8727|  9.24k|        {
 8728|  9.24k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  9.24k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 9.23k, False: 13]
  |  |  ------------------
  ------------------
 8729|  9.23k|            {
 8730|  9.23k|                ptr[read_index] = static_cast<char>(*current);
 8731|  9.23k|                std::advance(current, 1);
 8732|  9.23k|            }
 8733|     13|            else
 8734|     13|            {
 8735|     13|                return read_index;
 8736|     13|            }
 8737|  9.24k|        }
 8738|  1.15k|        return count * sizeof(T);
 8739|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIdEEvRT_:
18698|  1.15k|    {
18699|  1.15k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.15k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.75k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.60k, False: 1.15k]
  ------------------
18715|  4.60k|            {
18716|  4.60k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.60k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10emit_floatIdEEbT_:
18825|  1.15k|    {
18826|  1.15k|        const auto result = static_cast<number_float_t>(number);
18827|  1.15k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.15k]
  |  |  |  Branch (1667:94): [True: 1.14k, False: 8]
  |  |  |  Branch (1667:94): [True: 0, False: 1.14k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.15k|        return sax->number_float(result, "");
18832|  1.15k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE16get_token_stringEv:
19152|    798|    {
19153|    798|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    798|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12number_floatEdRKSC_:
13908|  7.80k|    {
13909|  7.80k|        handle_value(val);
13910|  7.80k|        return true;
13911|  7.80k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRdEEPSG_OT_:
14030|  7.80k|    {
14031|  7.80k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 454, False: 7.34k]
  ------------------
14032|    454|        {
14033|    454|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    454|            return &root;
14040|    454|        }
14041|       |
14042|  7.34k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  7.34k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 7.05k, False: 294]
  |  Branch (14042:9): [True: 294, False: 0]
  |  Branch (14042:9): [True: 7.34k, False: 0]
  ------------------
14043|       |
14044|  7.34k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 7.05k, False: 294]
  ------------------
14045|  7.05k|        {
14046|  7.05k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  7.05k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  7.05k|        }
14054|       |
14055|    294|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    294|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 294, False: 0]
  ------------------
14056|    294|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    294|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 294, False: 0]
  ------------------
14057|    294|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    294|        return object_element;
14064|    294|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIcEEmPT_m:
 8644|  14.9k|    {
 8645|  14.9k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  14.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIcEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  14.9k|    {
 8725|  14.9k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  80.4k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 65.9k, False: 14.5k]
  ------------------
 8727|  65.9k|        {
 8728|  65.9k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  65.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 65.5k, False: 450]
  |  |  ------------------
  ------------------
 8729|  65.5k|            {
 8730|  65.5k|                ptr[read_index] = static_cast<char>(*current);
 8731|  65.5k|                std::advance(current, 1);
 8732|  65.5k|            }
 8733|    450|            else
 8734|    450|            {
 8735|    450|                return read_index;
 8736|    450|            }
 8737|  65.9k|        }
 8738|  14.5k|        return count * sizeof(T);
 8739|  14.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE6stringERSC_:
13914|  13.2k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  13.2k|        handle_value(std::move(val));
13918|  13.2k|        return true;
13919|  13.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueISC_EEPSG_OT_:
14030|  13.2k|    {
14031|  13.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 395, False: 12.8k]
  ------------------
14032|    395|        {
14033|    395|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    395|            return &root;
14040|    395|        }
14041|       |
14042|  12.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 9.55k, False: 3.31k]
  |  Branch (14042:9): [True: 3.31k, False: 0]
  |  Branch (14042:9): [True: 12.8k, False: 0]
  ------------------
14043|       |
14044|  12.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 9.55k, False: 3.31k]
  ------------------
14045|  9.55k|        {
14046|  9.55k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  9.55k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  9.55k|        }
14054|       |
14055|  3.31k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.31k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.31k, False: 0]
  ------------------
14056|  3.31k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.31k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.31k, False: 0]
  ------------------
14057|  3.31k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.31k|        return object_element;
14064|  3.31k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIhEEmPT_m:
 8644|  9.59k|    {
 8645|  9.59k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  9.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIhEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  9.59k|    {
 8725|  9.59k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  42.4k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 33.3k, False: 9.12k]
  ------------------
 8727|  33.3k|        {
 8728|  33.3k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  33.3k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 32.8k, False: 468]
  |  |  ------------------
  ------------------
 8729|  32.8k|            {
 8730|  32.8k|                ptr[read_index] = static_cast<char>(*current);
 8731|  32.8k|                std::advance(current, 1);
 8732|  32.8k|            }
 8733|    468|            else
 8734|    468|            {
 8735|    468|                return read_index;
 8736|    468|            }
 8737|  33.3k|        }
 8738|  9.12k|        return count * sizeof(T);
 8739|  9.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  25.8k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  25.8k|        handle_value(std::move(val));
13926|  25.8k|        return true;
13927|  25.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  25.8k|    {
14031|  25.8k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 100, False: 25.7k]
  ------------------
14032|    100|        {
14033|    100|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    100|            return &root;
14040|    100|        }
14041|       |
14042|  25.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  25.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 23.9k, False: 1.82k]
  |  Branch (14042:9): [True: 1.82k, False: 0]
  |  Branch (14042:9): [True: 25.7k, False: 0]
  ------------------
14043|       |
14044|  25.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 23.9k, False: 1.82k]
  ------------------
14045|  23.9k|        {
14046|  23.9k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  23.9k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  23.9k|        }
14054|       |
14055|  1.82k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.82k, False: 0]
  ------------------
14056|  1.82k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.82k, False: 0]
  ------------------
14057|  1.82k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.82k|        return object_element;
14064|  1.82k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIhLb0EEEbRT_:
18739|  4.12k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.12k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.12k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.12k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.08k, False: 34]
  |  Branch (18746:34): [Folded, False: 4.08k]
  |  Branch (18746:57): [True: 0, False: 4.08k]
  ------------------
18747|  4.08k|        {
18748|  4.08k|            byte_swap(result);
18749|  4.08k|        }
18750|  4.12k|        return true;
18751|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIhEEbRT_PKc:
18667|  4.12k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.12k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.12k|        chars_read += new_chars_read;
18672|  4.12k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 34, False: 4.08k]
  |  |  ------------------
  ------------------
18673|     34|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     34|            ++chars_read;
18676|     34|            static_cast<void>(report_eof(context));
18677|     34|            return false;
18678|     34|        }
18679|  4.08k|        return true;
18680|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIhEEvRT_:
18698|  4.08k|    {
18699|  4.08k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.08k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.08k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 4.08k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.08k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE7booleanEb:
13890|  3.82k|    {
13891|  3.82k|        handle_value(val);
13892|  3.82k|        return true;
13893|  3.82k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRbEEPSG_OT_:
14030|  3.82k|    {
14031|  3.82k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4, False: 3.82k]
  ------------------
14032|      4|        {
14033|      4|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      4|            return &root;
14040|      4|        }
14041|       |
14042|  3.82k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 3.22k, False: 597]
  |  Branch (14042:9): [True: 597, False: 0]
  |  Branch (14042:9): [True: 3.82k, False: 0]
  ------------------
14043|       |
14044|  3.82k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 3.22k, False: 597]
  ------------------
14045|  3.22k|        {
14046|  3.22k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  3.22k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  3.22k|        }
14054|       |
14055|    597|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    597|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 597, False: 0]
  ------------------
14056|    597|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    597|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 597, False: 0]
  ------------------
14057|    597|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    597|        return object_element;
14064|    597|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE4nullEv:
13884|  2.71k|    {
13885|  2.71k|        handle_value(nullptr);
13886|  2.71k|        return true;
13887|  2.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIDnEEPSG_OT_:
14030|  2.71k|    {
14031|  2.71k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 2.70k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  2.70k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.70k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.37k, False: 330]
  |  Branch (14042:9): [True: 330, False: 0]
  |  Branch (14042:9): [True: 2.70k, False: 0]
  ------------------
14043|       |
14044|  2.70k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.37k, False: 330]
  ------------------
14045|  2.37k|        {
14046|  2.37k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.37k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.37k|        }
14054|       |
14055|    330|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    330|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 330, False: 0]
  ------------------
14056|    330|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    330|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 330, False: 0]
  ------------------
14057|    330|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    330|        return object_element;
14064|    330|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE14number_integerEl:
13896|  16.7k|    {
13897|  16.7k|        handle_value(val);
13898|  16.7k|        return true;
13899|  16.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRlEEPSG_OT_:
14030|  16.7k|    {
14031|  16.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 330, False: 16.3k]
  ------------------
14032|    330|        {
14033|    330|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    330|            return &root;
14040|    330|        }
14041|       |
14042|  16.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  16.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 12.8k, False: 3.57k]
  |  Branch (14042:9): [True: 3.57k, False: 0]
  |  Branch (14042:9): [True: 16.3k, False: 0]
  ------------------
14043|       |
14044|  16.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 12.8k, False: 3.57k]
  ------------------
14045|  12.8k|        {
14046|  12.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  12.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  12.8k|        }
14054|       |
14055|  3.57k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.57k, False: 0]
  ------------------
14056|  3.57k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.57k, False: 0]
  ------------------
14057|  3.57k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.57k|        return object_element;
14064|  3.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE15number_unsignedEm:
13902|  23.0k|    {
13903|  23.0k|        handle_value(val);
13904|  23.0k|        return true;
13905|  23.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRmEEPSG_OT_:
14030|  23.0k|    {
14031|  23.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 282, False: 22.7k]
  ------------------
14032|    282|        {
14033|    282|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    282|            return &root;
14040|    282|        }
14041|       |
14042|  22.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  22.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 20.8k, False: 1.90k]
  |  Branch (14042:9): [True: 1.90k, False: 0]
  |  Branch (14042:9): [True: 22.7k, False: 0]
  ------------------
14043|       |
14044|  22.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 20.8k, False: 1.90k]
  ------------------
14045|  20.8k|        {
14046|  20.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  20.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  20.8k|        }
14054|       |
14055|  1.90k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.90k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.90k, False: 0]
  ------------------
14056|  1.90k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.90k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.90k, False: 0]
  ------------------
14057|  1.90k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.90k|        return object_element;
14064|  1.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10emit_floatIeEEbT_:
18825|    164|    {
18826|    164|        const auto result = static_cast<number_float_t>(number);
18827|    164|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|    328|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 164]
  |  |  |  Branch (1667:94): [True: 164, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 164]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    164|        return sax->number_float(result, "");
18832|    164|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toImEEbRT_PKc:
18667|  2.89k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  2.89k|        auto new_chars_read = ia.get_elements(&dest);
18671|  2.89k|        chars_read += new_chars_read;
18672|  2.89k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  2.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 80, False: 2.81k]
  |  |  ------------------
  ------------------
18673|     80|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     80|            ++chars_read;
18676|     80|            static_cast<void>(report_eof(context));
18677|     80|            return false;
18678|     80|        }
18679|  2.81k|        return true;
18680|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsImEEmPT_m:
 8644|  2.89k|    {
 8645|  2.89k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implImEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  2.89k|    {
 8725|  2.89k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  25.6k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 22.8k, False: 2.81k]
  ------------------
 8727|  22.8k|        {
 8728|  22.8k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  22.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 22.7k, False: 80]
  |  |  ------------------
  ------------------
 8729|  22.7k|            {
 8730|  22.7k|                ptr[read_index] = static_cast<char>(*current);
 8731|  22.7k|                std::advance(current, 1);
 8732|  22.7k|            }
 8733|     80|            else
 8734|     80|            {
 8735|     80|                return read_index;
 8736|     80|            }
 8737|  22.8k|        }
 8738|  2.81k|        return count * sizeof(T);
 8739|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapImEEvRT_:
18698|  2.81k|    {
18699|  2.81k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  2.81k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  14.0k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 11.2k, False: 2.81k]
  ------------------
18715|  11.2k|            {
18716|  11.2k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  11.2k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  2.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE13emit_unsignedImEEbT_:
18799|    644|    {
18800|    644|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    644|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 644, False: 0]
  |  |  ------------------
  ------------------
18801|    644|        {
18802|    644|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    644|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    644|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE19parse_cbor_internalENS1_18cbor_tag_handler_tE:
16340|  6.72k|    {
16341|       |        // whether the next value starts at a fresh byte or at the one already
16342|       |        // read into `current`
16343|  6.72k|        bool fetch = true;
16344|       |
16345|       |        // the key currently being read; hoisted out of the loop so that its
16346|       |        // capacity is reused across elements and across nesting levels
16347|  6.72k|        string_t key;
16348|       |
16349|   302k|        while (true)
  ------------------
  |  Branch (16349:16): [True: 299k, Folded]
  ------------------
16350|   299k|        {
16351|   299k|            if (!container_stack.empty())
  ------------------
  |  Branch (16351:17): [True: 292k, False: 6.72k]
  ------------------
16352|   292k|            {
16353|       |                // a copy, not a reference: it must stay valid across the
16354|       |                // pop_back() below, which destroys the container_stack element
16355|       |                // it would otherwise alias
16356|   292k|                const container_frame top = container_stack.back();
16357|   292k|                bool at_end = false;
16358|       |
16359|   292k|                if (top.remaining != npos)
  ------------------
  |  Branch (16359:21): [True: 196k, False: 96.2k]
  ------------------
16360|   196k|                {
16361|       |                    // definite length: the container ends once its elements
16362|       |                    // have been read
16363|   196k|                    at_end = (top.remaining == 0);
16364|   196k|                    if (!at_end)
  ------------------
  |  Branch (16364:25): [True: 110k, False: 85.9k]
  ------------------
16365|   110k|                    {
16366|       |                        // claim the element about to be read
16367|   110k|                        --container_stack.back().remaining;
16368|   110k|                        if (top.is_object)
  ------------------
  |  Branch (16368:29): [True: 19.8k, False: 90.6k]
  ------------------
16369|  19.8k|                        {
16370|  19.8k|                            get();
16371|  19.8k|                        }
16372|   110k|                    }
16373|   196k|                    fetch = true;
16374|   196k|                }
16375|  96.2k|                else
16376|  96.2k|                {
16377|       |                    // indefinite length: the container ends at a break marker.
16378|       |                    // Testing for it consumes a byte, which is the first byte
16379|       |                    // of the next element when it is not one.
16380|  96.2k|                    at_end = (get() == 0xFF);
16381|  96.2k|                    fetch = top.is_object;
16382|  96.2k|                }
16383|       |
16384|   292k|                if (at_end)
  ------------------
  |  Branch (16384:21): [True: 88.0k, False: 204k]
  ------------------
16385|  88.0k|                {
16386|  88.0k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  88.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 88.0k]
  |  |  ------------------
  ------------------
16387|      0|                    {
16388|      0|                        return false;
16389|      0|                    }
16390|       |                    // the value begun here is complete once its container is
16391|  88.0k|                    if (container_stack.empty())
  ------------------
  |  Branch (16391:25): [True: 2.12k, False: 85.9k]
  ------------------
16392|  2.12k|                    {
16393|  2.12k|                        return true;
16394|  2.12k|                    }
16395|  85.9k|                    continue;
16396|  88.0k|                }
16397|       |
16398|   204k|                if (top.is_object)
  ------------------
  |  Branch (16398:21): [True: 28.0k, False: 176k]
  ------------------
16399|  28.0k|                {
16400|  28.0k|                    key.clear();
16401|  28.0k|                    if (JSON_HEDLEY_UNLIKELY(!get_cbor_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  55.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 28.0k]
  |  |  |  Branch (1667:94): [True: 432, False: 27.6k]
  |  |  |  Branch (1667:94): [True: 0, False: 27.6k]
  |  |  ------------------
  ------------------
16402|      0|                    {
16403|      0|                        return false;
16404|      0|                    }
16405|  28.0k|                    fetch = true;
16406|  28.0k|                }
16407|   204k|            }
16408|       |
16409|       |            // a tag is not a value of its own: read on until the tagged value
16410|   211k|            bool tag_pending = false;
16411|   211k|            bool item_read = false;
16412|   211k|            do
16413|   211k|            {
16414|   211k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1667|   211k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 211k]
  |  |  ------------------
  ------------------
16415|      0|                {
16416|      0|                    return false;
16417|      0|                }
16418|   211k|                fetch = !item_read;
16419|   211k|            }
16420|   211k|            while (tag_pending);
  ------------------
  |  Branch (16420:20): [True: 0, False: 211k]
  ------------------
16421|       |
16422|       |            // a value that opened a container left it on the stack; one that
16423|       |            // did not, and that was not inside a container, was the whole value
16424|   211k|            if (container_stack.empty())
  ------------------
  |  Branch (16424:17): [True: 1.56k, False: 209k]
  ------------------
16425|  1.56k|            {
16426|  1.56k|                return true;
16427|  1.56k|            }
16428|   211k|        }
16429|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE19get_cbor_object_keyERSC_:
16039|  28.0k|    {
16040|       |        // EOF and major type 3 (text string) are left to get_cbor_string
16041|  28.0k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (16041:13): [True: 283, False: 27.7k]
  |  Branch (16041:57): [True: 27.6k, False: 127]
  ------------------
16042|  27.9k|        {
16043|  27.9k|            return get_cbor_string(result, "key");
16044|  27.9k|        }
16045|       |
16046|    127|        const char* found = nullptr;
16047|    127|        switch (static_cast<unsigned int>(current) >> 5u)
16048|    127|        {
16049|     35|            case 0:
  ------------------
  |  Branch (16049:13): [True: 35, False: 92]
  ------------------
16050|     35|                found = "an unsigned integer";
16051|     35|                break;
16052|     17|            case 1:
  ------------------
  |  Branch (16052:13): [True: 17, False: 110]
  ------------------
16053|     17|                found = "a negative integer";
16054|     17|                break;
16055|     11|            case 2:
  ------------------
  |  Branch (16055:13): [True: 11, False: 116]
  ------------------
16056|     11|                found = "a byte string";
16057|     11|                break;
16058|     11|            case 4:
  ------------------
  |  Branch (16058:13): [True: 11, False: 116]
  ------------------
16059|     11|                found = "an array";
16060|     11|                break;
16061|     25|            case 5:
  ------------------
  |  Branch (16061:13): [True: 25, False: 102]
  ------------------
16062|     25|                found = "a map";
16063|     25|                break;
16064|      5|            case 6:
  ------------------
  |  Branch (16064:13): [True: 5, False: 122]
  ------------------
16065|      5|                found = "a tag";
16066|      5|                break;
16067|     23|            default: // major type 7
  ------------------
  |  Branch (16067:13): [True: 23, False: 104]
  ------------------
16068|     23|                switch (current)
16069|     23|                {
16070|      1|                    case 0xF4:
  ------------------
  |  Branch (16070:21): [True: 1, False: 22]
  ------------------
16071|      1|                    case 0xF5:
  ------------------
  |  Branch (16071:21): [True: 0, False: 23]
  ------------------
16072|      1|                        found = "a boolean";
16073|      1|                        break;
16074|      0|                    case 0xF6:
  ------------------
  |  Branch (16074:21): [True: 0, False: 23]
  ------------------
16075|      0|                        found = "null";
16076|      0|                        break;
16077|      1|                    case 0xF7:
  ------------------
  |  Branch (16077:21): [True: 1, False: 22]
  ------------------
16078|      1|                        found = "undefined";
16079|      1|                        break;
16080|      1|                    case 0xF9:
  ------------------
  |  Branch (16080:21): [True: 1, False: 22]
  ------------------
16081|      1|                    case 0xFA:
  ------------------
  |  Branch (16081:21): [True: 0, False: 23]
  ------------------
16082|      1|                    case 0xFB:
  ------------------
  |  Branch (16082:21): [True: 0, False: 23]
  ------------------
16083|      1|                        found = "a floating-point number";
16084|      1|                        break;
16085|      5|                    case 0xFF:
  ------------------
  |  Branch (16085:21): [True: 5, False: 18]
  ------------------
16086|      5|                        found = "a break stop code";
16087|      5|                        break;
16088|     15|                    default:
  ------------------
  |  Branch (16088:21): [True: 15, False: 8]
  ------------------
16089|     15|                        found = "a simple value";
16090|     15|                        break;
16091|     23|                }
16092|     23|                break;
16093|    127|        }
16094|       |
16095|    127|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16096|    127|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15get_cbor_stringERSC_PKc:
15982|  41.7k|    {
15983|       |        // read chunks iteratively, but reject a second indefinite-length
15984|       |        // level as required by RFC 8949, Section 3.2.3
15985|  41.7k|        bool indefinite = false;
15986|       |
15987|  44.0k|        while (true)
  ------------------
  |  Branch (15987:16): [True: 43.2k, Folded]
  ------------------
15988|  43.2k|        {
15989|  43.2k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|  43.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 43.2k]
  |  |  ------------------
  ------------------
15990|      0|            {
15991|      0|                return false;
15992|      0|            }
15993|       |
15994|  43.2k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15994:17): [True: 550, False: 42.6k]
  ------------------
15995|    550|            {
15996|    550|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|    550|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3, False: 547]
  |  |  ------------------
  ------------------
15997|      3|                {
15998|      3|                    return cbor_indefinite_string_error("string", "string");
15999|      3|                }
16000|    547|                indefinite = true;
16001|    547|                get();
16002|    547|                continue;
16003|    550|            }
16004|       |
16005|       |            // a break marker closes the indefinite-length string; outside
16006|       |            // of one it falls through to the error below
16007|  42.6k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16007:17): [True: 1.50k, False: 41.1k]
  |  Branch (16007:31): [True: 467, False: 1.03k]
  ------------------
16008|    467|            {
16009|    467|                return check_string_utf8(result, context);
16010|    467|            }
16011|       |
16012|  42.2k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, indefinite)))
  ------------------
  |  | 1667|  42.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 42.2k]
  |  |  ------------------
  ------------------
16013|      0|            {
16014|      0|                return false;
16015|      0|            }
16016|       |
16017|  42.2k|            if (!indefinite)
  ------------------
  |  Branch (16017:17): [True: 40.4k, False: 1.80k]
  ------------------
16018|  40.4k|            {
16019|  40.4k|                return check_string_utf8(result, context);
16020|  40.4k|            }
16021|       |
16022|  1.80k|            get();
16023|  1.80k|        }
16024|  41.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE28cbor_indefinite_string_errorEPKcSQ_:
15887|      6|    {
15888|      6|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
15889|      6|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE21get_cbor_string_chunkERSC_b:
15907|  41.9k|    {
15908|  41.9k|        switch (current)
15909|  41.9k|        {
15910|       |            // UTF-8 string (0x00..0x17 bytes follow)
15911|  25.6k|            case 0x60:
  ------------------
  |  Branch (15911:13): [True: 25.6k, False: 16.2k]
  ------------------
15912|  34.5k|            case 0x61:
  ------------------
  |  Branch (15912:13): [True: 8.86k, False: 33.0k]
  ------------------
15913|  35.2k|            case 0x62:
  ------------------
  |  Branch (15913:13): [True: 747, False: 41.1k]
  ------------------
15914|  35.5k|            case 0x63:
  ------------------
  |  Branch (15914:13): [True: 279, False: 41.6k]
  ------------------
15915|  35.8k|            case 0x64:
  ------------------
  |  Branch (15915:13): [True: 237, False: 41.6k]
  ------------------
15916|  36.1k|            case 0x65:
  ------------------
  |  Branch (15916:13): [True: 376, False: 41.5k]
  ------------------
15917|  36.4k|            case 0x66:
  ------------------
  |  Branch (15917:13): [True: 266, False: 41.6k]
  ------------------
15918|  36.6k|            case 0x67:
  ------------------
  |  Branch (15918:13): [True: 160, False: 41.7k]
  ------------------
15919|  36.8k|            case 0x68:
  ------------------
  |  Branch (15919:13): [True: 260, False: 41.6k]
  ------------------
15920|  36.9k|            case 0x69:
  ------------------
  |  Branch (15920:13): [True: 114, False: 41.8k]
  ------------------
15921|  37.1k|            case 0x6A:
  ------------------
  |  Branch (15921:13): [True: 163, False: 41.7k]
  ------------------
15922|  37.2k|            case 0x6B:
  ------------------
  |  Branch (15922:13): [True: 151, False: 41.7k]
  ------------------
15923|  37.4k|            case 0x6C:
  ------------------
  |  Branch (15923:13): [True: 206, False: 41.7k]
  ------------------
15924|  37.6k|            case 0x6D:
  ------------------
  |  Branch (15924:13): [True: 122, False: 41.7k]
  ------------------
15925|  37.6k|            case 0x6E:
  ------------------
  |  Branch (15925:13): [True: 72, False: 41.8k]
  ------------------
15926|  37.8k|            case 0x6F:
  ------------------
  |  Branch (15926:13): [True: 109, False: 41.8k]
  ------------------
15927|  37.9k|            case 0x70:
  ------------------
  |  Branch (15927:13): [True: 115, False: 41.7k]
  ------------------
15928|  37.9k|            case 0x71:
  ------------------
  |  Branch (15928:13): [True: 80, False: 41.8k]
  ------------------
15929|  38.0k|            case 0x72:
  ------------------
  |  Branch (15929:13): [True: 96, False: 41.8k]
  ------------------
15930|  38.1k|            case 0x73:
  ------------------
  |  Branch (15930:13): [True: 72, False: 41.8k]
  ------------------
15931|  38.2k|            case 0x74:
  ------------------
  |  Branch (15931:13): [True: 117, False: 41.7k]
  ------------------
15932|  38.3k|            case 0x75:
  ------------------
  |  Branch (15932:13): [True: 70, False: 41.8k]
  ------------------
15933|  38.4k|            case 0x76:
  ------------------
  |  Branch (15933:13): [True: 68, False: 41.8k]
  ------------------
15934|  38.6k|            case 0x77:
  ------------------
  |  Branch (15934:13): [True: 265, False: 41.6k]
  ------------------
15935|  38.6k|            {
15936|  38.6k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
15937|  38.4k|            }
15938|       |
15939|  1.27k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15939:13): [True: 1.27k, False: 40.6k]
  ------------------
15940|  1.27k|            {
15941|  1.27k|                std::uint8_t len{};
15942|  1.27k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15942:24): [True: 1.27k, False: 8]
  |  Branch (15942:43): [True: 1.23k, False: 36]
  ------------------
15943|  38.4k|            }
15944|       |
15945|  1.17k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15945:13): [True: 1.17k, False: 40.7k]
  ------------------
15946|  1.17k|            {
15947|  1.17k|                std::uint16_t len{};
15948|  1.17k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15948:24): [True: 1.16k, False: 10]
  |  Branch (15948:43): [True: 1.10k, False: 62]
  ------------------
15949|  38.4k|            }
15950|       |
15951|    255|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15951:13): [True: 255, False: 41.6k]
  ------------------
15952|    255|            {
15953|    255|                std::uint32_t len{};
15954|    255|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15954:24): [True: 243, False: 12]
  |  Branch (15954:43): [True: 178, False: 65]
  ------------------
15955|  38.4k|            }
15956|       |
15957|    488|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15957:13): [True: 488, False: 41.4k]
  ------------------
15958|    488|            {
15959|    488|                std::uint64_t len{};
15960|    488|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15960:24): [True: 472, False: 16]
  |  Branch (15960:43): [True: 345, False: 127]
  ------------------
15961|  38.4k|            }
15962|       |
15963|     33|            default:
  ------------------
  |  Branch (15963:13): [True: 33, False: 41.8k]
  ------------------
15964|     33|            {
15965|     33|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (15965:133): [True: 30, False: 3]
  ------------------
15966|  38.4k|            }
15967|  41.9k|        }
15968|  41.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_stringIjEEbT_RSC_:
18910|  38.9k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  38.9k|        return get_bytes(len, "string", result);
18921|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|  38.9k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  38.9k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  51.7k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 13.0k, False: 38.7k]
  ------------------
19003|  13.0k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  13.0k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 13.0k, False: 44]
  ------------------
19007|  13.0k|                                       ? static_cast<std::size_t>(len)
19008|  13.0k|                                       : chunk_size;
19009|  13.0k|            const std::size_t old_size = result.size();
19010|  13.0k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  13.0k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  13.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 13.0k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  13.0k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  13.0k|            chars_read += bytes_read;
19018|  13.0k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  13.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 225, False: 12.8k]
  |  |  ------------------
  ------------------
19019|    225|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    225|                result.resize(old_size + bytes_read);
19024|    225|                ++chars_read;
19025|    225|                current = char_traits<char_type>::eof();
19026|    225|                return unexpect_eof(context);
19027|    225|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  12.8k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  12.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 12.8k, False: 0]
  ------------------
19030|  12.8k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  12.8k|        }
19032|  38.7k|        return true;
19033|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_stringIhEEbT_RSC_:
18910|  1.27k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.27k|        return get_bytes(len, "string", result);
18921|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  1.27k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.27k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  2.24k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.00k, False: 1.23k]
  ------------------
19003|  1.00k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.00k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.00k, False: 0]
  ------------------
19007|  1.00k|                                       ? static_cast<std::size_t>(len)
19008|  1.00k|                                       : chunk_size;
19009|  1.00k|            const std::size_t old_size = result.size();
19010|  1.00k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.00k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.00k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.00k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.00k|            chars_read += bytes_read;
19018|  1.00k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 36, False: 970]
  |  |  ------------------
  ------------------
19019|     36|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     36|                result.resize(old_size + bytes_read);
19024|     36|                ++chars_read;
19025|     36|                current = char_traits<char_type>::eof();
19026|     36|                return unexpect_eof(context);
19027|     36|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    970|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    970|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 970, False: 0]
  ------------------
19030|    970|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    970|        }
19032|  1.23k|        return true;
19033|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberItLb0EEEbRT_:
18739|  3.70k|    {
18740|       |        // read in the original format
18741|       |
18742|  3.70k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  3.70k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.70k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  3.70k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.66k, False: 48]
  |  Branch (18746:34): [Folded, False: 3.66k]
  |  Branch (18746:57): [True: 0, False: 3.66k]
  ------------------
18747|  3.66k|        {
18748|  3.66k|            byte_swap(result);
18749|  3.66k|        }
18750|  3.70k|        return true;
18751|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toItEEbRT_PKc:
18667|  3.70k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  3.70k|        auto new_chars_read = ia.get_elements(&dest);
18671|  3.70k|        chars_read += new_chars_read;
18672|  3.70k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  3.70k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 48, False: 3.66k]
  |  |  ------------------
  ------------------
18673|     48|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     48|            ++chars_read;
18676|     48|            static_cast<void>(report_eof(context));
18677|     48|            return false;
18678|     48|        }
18679|  3.66k|        return true;
18680|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsItEEmPT_m:
 8644|  3.70k|    {
 8645|  3.70k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implItEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  3.70k|    {
 8725|  3.70k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  11.0k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 7.37k, False: 3.66k]
  ------------------
 8727|  7.37k|        {
 8728|  7.37k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  7.37k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 7.32k, False: 48]
  |  |  ------------------
  ------------------
 8729|  7.32k|            {
 8730|  7.32k|                ptr[read_index] = static_cast<char>(*current);
 8731|  7.32k|                std::advance(current, 1);
 8732|  7.32k|            }
 8733|     48|            else
 8734|     48|            {
 8735|     48|                return read_index;
 8736|     48|            }
 8737|  7.37k|        }
 8738|  3.66k|        return count * sizeof(T);
 8739|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapItEEvRT_:
18698|  3.66k|    {
18699|  3.66k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.66k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  7.32k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.66k, False: 3.66k]
  ------------------
18715|  3.66k|            {
18716|  3.66k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.66k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.66k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_stringItEEbT_RSC_:
18910|  1.16k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.16k|        return get_bytes(len, "string", result);
18921|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|  1.16k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.16k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.69k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 594, False: 1.10k]
  ------------------
19003|    594|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    594|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 574, False: 20]
  ------------------
19007|    594|                                       ? static_cast<std::size_t>(len)
19008|    594|                                       : chunk_size;
19009|    594|            const std::size_t old_size = result.size();
19010|    594|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    594|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    594|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 594, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    594|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    594|            chars_read += bytes_read;
19018|    594|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    594|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 62, False: 532]
  |  |  ------------------
  ------------------
19019|     62|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     62|                result.resize(old_size + bytes_read);
19024|     62|                ++chars_read;
19025|     62|                current = char_traits<char_type>::eof();
19026|     62|                return unexpect_eof(context);
19027|     62|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    532|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    532|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 532, False: 0]
  ------------------
19030|    532|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    532|        }
19032|  1.10k|        return true;
19033|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIjLb0EEEbRT_:
18739|  1.73k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.73k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.73k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.73k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.66k, False: 63]
  |  Branch (18746:34): [Folded, False: 1.66k]
  |  Branch (18746:57): [True: 0, False: 1.66k]
  ------------------
18747|  1.66k|        {
18748|  1.66k|            byte_swap(result);
18749|  1.66k|        }
18750|  1.73k|        return true;
18751|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIjEEbRT_PKc:
18667|  1.73k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.73k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.73k|        chars_read += new_chars_read;
18672|  1.73k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 63, False: 1.66k]
  |  |  ------------------
  ------------------
18673|     63|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     63|            ++chars_read;
18676|     63|            static_cast<void>(report_eof(context));
18677|     63|            return false;
18678|     63|        }
18679|  1.66k|        return true;
18680|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIjEEmPT_m:
 8644|  1.73k|    {
 8645|  1.73k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIjEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.73k|    {
 8725|  1.73k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  8.45k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 6.78k, False: 1.66k]
  ------------------
 8727|  6.78k|        {
 8728|  6.78k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  6.78k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 6.72k, False: 63]
  |  |  ------------------
  ------------------
 8729|  6.72k|            {
 8730|  6.72k|                ptr[read_index] = static_cast<char>(*current);
 8731|  6.72k|                std::advance(current, 1);
 8732|  6.72k|            }
 8733|     63|            else
 8734|     63|            {
 8735|     63|                return read_index;
 8736|     63|            }
 8737|  6.78k|        }
 8738|  1.66k|        return count * sizeof(T);
 8739|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIjEEvRT_:
18698|  1.66k|    {
18699|  1.66k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.66k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.00k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.33k, False: 1.66k]
  ------------------
18715|  3.33k|            {
18716|  3.33k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.33k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.66k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberImLb0EEEbRT_:
18739|  2.89k|    {
18740|       |        // read in the original format
18741|       |
18742|  2.89k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  2.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 2.89k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  2.89k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 2.81k, False: 80]
  |  Branch (18746:34): [Folded, False: 2.81k]
  |  Branch (18746:57): [True: 0, False: 2.81k]
  ------------------
18747|  2.81k|        {
18748|  2.81k|            byte_swap(result);
18749|  2.81k|        }
18750|  2.89k|        return true;
18751|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_stringImEEbT_RSC_:
18910|    472|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    472|        return get_bytes(len, "string", result);
18921|    472|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesImSC_EEbT_PKcRT0_:
18998|    472|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    472|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    619|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 274, False: 345]
  ------------------
19003|    274|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    274|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 166, False: 108]
  ------------------
19007|    274|                                       ? static_cast<std::size_t>(len)
19008|    274|                                       : chunk_size;
19009|    274|            const std::size_t old_size = result.size();
19010|    274|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    274|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    274|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 274, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    274|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    274|            chars_read += bytes_read;
19018|    274|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    274|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 127, False: 147]
  |  |  ------------------
  ------------------
19019|    127|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    127|                result.resize(old_size + bytes_read);
19024|    127|                ++chars_read;
19025|    127|                current = char_traits<char_type>::eof();
19026|    127|                return unexpect_eof(context);
19027|    127|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    147|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    147|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 147, False: 0]
  ------------------
19030|    147|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    147|        }
19032|    345|        return true;
19033|    472|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE16parse_cbor_valueEbNS1_18cbor_tag_handler_tERbSQ_:
15503|   211k|    {
15504|   211k|        tag_pending = false;
15505|   211k|        item_read = false;
15506|       |
15507|   211k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (15507:17): [True: 125k, False: 85.9k]
  ------------------
15508|   211k|        {
15509|       |            // EOF
15510|  1.03k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (15510:13): [True: 1.03k, False: 209k]
  ------------------
15511|  1.03k|                return unexpect_eof("value");
15512|       |
15513|       |            // Integer 0x00..0x17 (0..23)
15514|  9.29k|            case 0x00:
  ------------------
  |  Branch (15514:13): [True: 9.29k, False: 201k]
  ------------------
15515|  10.3k|            case 0x01:
  ------------------
  |  Branch (15515:13): [True: 1.10k, False: 209k]
  ------------------
15516|  10.9k|            case 0x02:
  ------------------
  |  Branch (15516:13): [True: 557, False: 210k]
  ------------------
15517|  11.3k|            case 0x03:
  ------------------
  |  Branch (15517:13): [True: 413, False: 210k]
  ------------------
15518|  12.0k|            case 0x04:
  ------------------
  |  Branch (15518:13): [True: 686, False: 210k]
  ------------------
15519|  12.6k|            case 0x05:
  ------------------
  |  Branch (15519:13): [True: 604, False: 210k]
  ------------------
15520|  13.4k|            case 0x06:
  ------------------
  |  Branch (15520:13): [True: 752, False: 210k]
  ------------------
15521|  13.7k|            case 0x07:
  ------------------
  |  Branch (15521:13): [True: 329, False: 210k]
  ------------------
15522|  14.6k|            case 0x08:
  ------------------
  |  Branch (15522:13): [True: 920, False: 210k]
  ------------------
15523|  15.1k|            case 0x09:
  ------------------
  |  Branch (15523:13): [True: 508, False: 210k]
  ------------------
15524|  15.6k|            case 0x0A:
  ------------------
  |  Branch (15524:13): [True: 465, False: 210k]
  ------------------
15525|  15.9k|            case 0x0B:
  ------------------
  |  Branch (15525:13): [True: 288, False: 210k]
  ------------------
15526|  16.2k|            case 0x0C:
  ------------------
  |  Branch (15526:13): [True: 329, False: 210k]
  ------------------
15527|  16.6k|            case 0x0D:
  ------------------
  |  Branch (15527:13): [True: 373, False: 210k]
  ------------------
15528|  17.0k|            case 0x0E:
  ------------------
  |  Branch (15528:13): [True: 470, False: 210k]
  ------------------
15529|  17.4k|            case 0x0F:
  ------------------
  |  Branch (15529:13): [True: 393, False: 210k]
  ------------------
15530|  18.0k|            case 0x10:
  ------------------
  |  Branch (15530:13): [True: 591, False: 210k]
  ------------------
15531|  18.6k|            case 0x11:
  ------------------
  |  Branch (15531:13): [True: 599, False: 210k]
  ------------------
15532|  19.0k|            case 0x12:
  ------------------
  |  Branch (15532:13): [True: 358, False: 210k]
  ------------------
15533|  19.3k|            case 0x13:
  ------------------
  |  Branch (15533:13): [True: 298, False: 210k]
  ------------------
15534|  19.8k|            case 0x14:
  ------------------
  |  Branch (15534:13): [True: 534, False: 210k]
  ------------------
15535|  20.1k|            case 0x15:
  ------------------
  |  Branch (15535:13): [True: 260, False: 210k]
  ------------------
15536|  20.5k|            case 0x16:
  ------------------
  |  Branch (15536:13): [True: 471, False: 210k]
  ------------------
15537|  20.9k|            case 0x17:
  ------------------
  |  Branch (15537:13): [True: 360, False: 210k]
  ------------------
15538|  20.9k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
15539|       |
15540|    750|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15540:13): [True: 750, False: 210k]
  ------------------
15541|    750|            {
15542|    750|                std::uint8_t number{};
15543|    750|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15543:24): [True: 748, False: 2]
  |  Branch (15543:46): [True: 748, False: 0]
  ------------------
15544|  20.5k|            }
15545|       |
15546|    371|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (15546:13): [True: 371, False: 210k]
  ------------------
15547|    371|            {
15548|    371|                std::uint16_t number{};
15549|    371|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15549:24): [True: 367, False: 4]
  |  Branch (15549:46): [True: 367, False: 0]
  ------------------
15550|  20.5k|            }
15551|       |
15552|    325|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (15552:13): [True: 325, False: 210k]
  ------------------
15553|    325|            {
15554|    325|                std::uint32_t number{};
15555|    325|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15555:24): [True: 319, False: 6]
  |  Branch (15555:46): [True: 319, False: 0]
  ------------------
15556|  20.5k|            }
15557|       |
15558|    656|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (15558:13): [True: 656, False: 210k]
  ------------------
15559|    656|            {
15560|    656|                std::uint64_t number{};
15561|    656|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15561:24): [True: 644, False: 12]
  |  Branch (15561:46): [True: 644, False: 0]
  ------------------
15562|  20.5k|            }
15563|       |
15564|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
15565|  1.14k|            case 0x20:
  ------------------
  |  Branch (15565:13): [True: 1.14k, False: 209k]
  ------------------
15566|  1.79k|            case 0x21:
  ------------------
  |  Branch (15566:13): [True: 647, False: 210k]
  ------------------
15567|  2.51k|            case 0x22:
  ------------------
  |  Branch (15567:13): [True: 720, False: 210k]
  ------------------
15568|  3.22k|            case 0x23:
  ------------------
  |  Branch (15568:13): [True: 714, False: 210k]
  ------------------
15569|  3.60k|            case 0x24:
  ------------------
  |  Branch (15569:13): [True: 382, False: 210k]
  ------------------
15570|  4.42k|            case 0x25:
  ------------------
  |  Branch (15570:13): [True: 817, False: 210k]
  ------------------
15571|  4.84k|            case 0x26:
  ------------------
  |  Branch (15571:13): [True: 421, False: 210k]
  ------------------
15572|  5.58k|            case 0x27:
  ------------------
  |  Branch (15572:13): [True: 740, False: 210k]
  ------------------
15573|  6.18k|            case 0x28:
  ------------------
  |  Branch (15573:13): [True: 602, False: 210k]
  ------------------
15574|  6.75k|            case 0x29:
  ------------------
  |  Branch (15574:13): [True: 562, False: 210k]
  ------------------
15575|  7.38k|            case 0x2A:
  ------------------
  |  Branch (15575:13): [True: 635, False: 210k]
  ------------------
15576|  7.99k|            case 0x2B:
  ------------------
  |  Branch (15576:13): [True: 613, False: 210k]
  ------------------
15577|  8.39k|            case 0x2C:
  ------------------
  |  Branch (15577:13): [True: 396, False: 210k]
  ------------------
15578|  9.19k|            case 0x2D:
  ------------------
  |  Branch (15578:13): [True: 805, False: 210k]
  ------------------
15579|  9.62k|            case 0x2E:
  ------------------
  |  Branch (15579:13): [True: 424, False: 210k]
  ------------------
15580|  10.4k|            case 0x2F:
  ------------------
  |  Branch (15580:13): [True: 799, False: 210k]
  ------------------
15581|  11.3k|            case 0x30:
  ------------------
  |  Branch (15581:13): [True: 909, False: 210k]
  ------------------
15582|  11.8k|            case 0x31:
  ------------------
  |  Branch (15582:13): [True: 538, False: 210k]
  ------------------
15583|  12.4k|            case 0x32:
  ------------------
  |  Branch (15583:13): [True: 551, False: 210k]
  ------------------
15584|  12.8k|            case 0x33:
  ------------------
  |  Branch (15584:13): [True: 416, False: 210k]
  ------------------
15585|  13.4k|            case 0x34:
  ------------------
  |  Branch (15585:13): [True: 622, False: 210k]
  ------------------
15586|  13.8k|            case 0x35:
  ------------------
  |  Branch (15586:13): [True: 371, False: 210k]
  ------------------
15587|  14.2k|            case 0x36:
  ------------------
  |  Branch (15587:13): [True: 450, False: 210k]
  ------------------
15588|  14.7k|            case 0x37:
  ------------------
  |  Branch (15588:13): [True: 514, False: 210k]
  ------------------
15589|  14.7k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
15590|       |
15591|    470|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15591:13): [True: 470, False: 210k]
  ------------------
15592|    470|                return get_cbor_negative_integer<std::uint8_t>();
15593|       |
15594|    486|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (15594:13): [True: 486, False: 210k]
  ------------------
15595|    486|                return get_cbor_negative_integer<std::uint16_t>();
15596|       |
15597|    336|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (15597:13): [True: 336, False: 210k]
  ------------------
15598|    336|                return get_cbor_negative_integer<std::uint32_t>();
15599|       |
15600|    827|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (15600:13): [True: 827, False: 210k]
  ------------------
15601|    827|                return get_cbor_negative_integer<std::uint64_t>();
15602|       |
15603|       |            // Binary data (0x00..0x17 bytes follow)
15604|  19.7k|            case 0x40:
  ------------------
  |  Branch (15604:13): [True: 19.7k, False: 191k]
  ------------------
15605|  21.0k|            case 0x41:
  ------------------
  |  Branch (15605:13): [True: 1.26k, False: 209k]
  ------------------
15606|  21.3k|            case 0x42:
  ------------------
  |  Branch (15606:13): [True: 351, False: 210k]
  ------------------
15607|  21.5k|            case 0x43:
  ------------------
  |  Branch (15607:13): [True: 154, False: 210k]
  ------------------
15608|  21.6k|            case 0x44:
  ------------------
  |  Branch (15608:13): [True: 119, False: 210k]
  ------------------
15609|  21.8k|            case 0x45:
  ------------------
  |  Branch (15609:13): [True: 180, False: 210k]
  ------------------
15610|  21.9k|            case 0x46:
  ------------------
  |  Branch (15610:13): [True: 138, False: 210k]
  ------------------
15611|  22.0k|            case 0x47:
  ------------------
  |  Branch (15611:13): [True: 112, False: 210k]
  ------------------
15612|  22.2k|            case 0x48:
  ------------------
  |  Branch (15612:13): [True: 149, False: 210k]
  ------------------
15613|  22.3k|            case 0x49:
  ------------------
  |  Branch (15613:13): [True: 94, False: 210k]
  ------------------
15614|  22.4k|            case 0x4A:
  ------------------
  |  Branch (15614:13): [True: 104, False: 210k]
  ------------------
15615|  22.5k|            case 0x4B:
  ------------------
  |  Branch (15615:13): [True: 107, False: 210k]
  ------------------
15616|  22.6k|            case 0x4C:
  ------------------
  |  Branch (15616:13): [True: 115, False: 210k]
  ------------------
15617|  22.7k|            case 0x4D:
  ------------------
  |  Branch (15617:13): [True: 77, False: 210k]
  ------------------
15618|  22.8k|            case 0x4E:
  ------------------
  |  Branch (15618:13): [True: 69, False: 210k]
  ------------------
15619|  22.8k|            case 0x4F:
  ------------------
  |  Branch (15619:13): [True: 46, False: 210k]
  ------------------
15620|  22.9k|            case 0x50:
  ------------------
  |  Branch (15620:13): [True: 71, False: 210k]
  ------------------
15621|  22.9k|            case 0x51:
  ------------------
  |  Branch (15621:13): [True: 48, False: 210k]
  ------------------
15622|  23.0k|            case 0x52:
  ------------------
  |  Branch (15622:13): [True: 48, False: 210k]
  ------------------
15623|  23.0k|            case 0x53:
  ------------------
  |  Branch (15623:13): [True: 51, False: 210k]
  ------------------
15624|  23.1k|            case 0x54:
  ------------------
  |  Branch (15624:13): [True: 41, False: 210k]
  ------------------
15625|  23.1k|            case 0x55:
  ------------------
  |  Branch (15625:13): [True: 44, False: 210k]
  ------------------
15626|  23.2k|            case 0x56:
  ------------------
  |  Branch (15626:13): [True: 52, False: 210k]
  ------------------
15627|  23.2k|            case 0x57:
  ------------------
  |  Branch (15627:13): [True: 60, False: 210k]
  ------------------
15628|  24.1k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15628:13): [True: 911, False: 210k]
  ------------------
15629|  24.8k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15629:13): [True: 632, False: 210k]
  ------------------
15630|  25.2k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15630:13): [True: 445, False: 210k]
  ------------------
15631|  25.6k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15631:13): [True: 422, False: 210k]
  ------------------
15632|  26.3k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (15632:13): [True: 717, False: 210k]
  ------------------
15633|  26.3k|            {
15634|  26.3k|                binary_t b;
15635|  26.3k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15635:24): [True: 25.8k, False: 531]
  |  Branch (15635:46): [True: 25.8k, False: 0]
  ------------------
15636|  25.6k|            }
15637|       |
15638|       |            // UTF-8 string (0x00..0x17 bytes follow)
15639|  5.95k|            case 0x60:
  ------------------
  |  Branch (15639:13): [True: 5.95k, False: 205k]
  ------------------
15640|  7.05k|            case 0x61:
  ------------------
  |  Branch (15640:13): [True: 1.10k, False: 209k]
  ------------------
15641|  7.48k|            case 0x62:
  ------------------
  |  Branch (15641:13): [True: 428, False: 210k]
  ------------------
15642|  7.74k|            case 0x63:
  ------------------
  |  Branch (15642:13): [True: 261, False: 210k]
  ------------------
15643|  7.96k|            case 0x64:
  ------------------
  |  Branch (15643:13): [True: 223, False: 210k]
  ------------------
15644|  8.31k|            case 0x65:
  ------------------
  |  Branch (15644:13): [True: 350, False: 210k]
  ------------------
15645|  8.56k|            case 0x66:
  ------------------
  |  Branch (15645:13): [True: 251, False: 210k]
  ------------------
15646|  8.71k|            case 0x67:
  ------------------
  |  Branch (15646:13): [True: 147, False: 210k]
  ------------------
15647|  8.95k|            case 0x68:
  ------------------
  |  Branch (15647:13): [True: 238, False: 210k]
  ------------------
15648|  9.05k|            case 0x69:
  ------------------
  |  Branch (15648:13): [True: 102, False: 210k]
  ------------------
15649|  9.19k|            case 0x6A:
  ------------------
  |  Branch (15649:13): [True: 141, False: 210k]
  ------------------
15650|  9.31k|            case 0x6B:
  ------------------
  |  Branch (15650:13): [True: 119, False: 210k]
  ------------------
15651|  9.51k|            case 0x6C:
  ------------------
  |  Branch (15651:13): [True: 197, False: 210k]
  ------------------
15652|  9.62k|            case 0x6D:
  ------------------
  |  Branch (15652:13): [True: 112, False: 210k]
  ------------------
15653|  9.68k|            case 0x6E:
  ------------------
  |  Branch (15653:13): [True: 59, False: 210k]
  ------------------
15654|  9.76k|            case 0x6F:
  ------------------
  |  Branch (15654:13): [True: 82, False: 210k]
  ------------------
15655|  9.84k|            case 0x70:
  ------------------
  |  Branch (15655:13): [True: 84, False: 210k]
  ------------------
15656|  9.91k|            case 0x71:
  ------------------
  |  Branch (15656:13): [True: 69, False: 210k]
  ------------------
15657|  10.0k|            case 0x72:
  ------------------
  |  Branch (15657:13): [True: 83, False: 210k]
  ------------------
15658|  10.0k|            case 0x73:
  ------------------
  |  Branch (15658:13): [True: 67, False: 210k]
  ------------------
15659|  10.1k|            case 0x74:
  ------------------
  |  Branch (15659:13): [True: 109, False: 210k]
  ------------------
15660|  10.2k|            case 0x75:
  ------------------
  |  Branch (15660:13): [True: 62, False: 210k]
  ------------------
15661|  10.3k|            case 0x76:
  ------------------
  |  Branch (15661:13): [True: 63, False: 210k]
  ------------------
15662|  10.4k|            case 0x77:
  ------------------
  |  Branch (15662:13): [True: 120, False: 210k]
  ------------------
15663|  11.5k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15663:13): [True: 1.13k, False: 209k]
  ------------------
15664|  12.5k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15664:13): [True: 996, False: 210k]
  ------------------
15665|  12.8k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15665:13): [True: 255, False: 210k]
  ------------------
15666|  13.2k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15666:13): [True: 449, False: 210k]
  ------------------
15667|  13.7k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15667:13): [True: 537, False: 210k]
  ------------------
15668|  13.7k|            {
15669|  13.7k|                string_t s;
15670|  13.7k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (15670:24): [True: 13.2k, False: 526]
  |  Branch (15670:46): [True: 13.2k, False: 0]
  ------------------
15671|  13.2k|            }
15672|       |
15673|       |            // array (0x00..0x17 data items follow)
15674|  2.68k|            case 0x80:
  ------------------
  |  Branch (15674:13): [True: 2.68k, False: 208k]
  ------------------
15675|  78.1k|            case 0x81:
  ------------------
  |  Branch (15675:13): [True: 75.4k, False: 135k]
  ------------------
15676|  78.5k|            case 0x82:
  ------------------
  |  Branch (15676:13): [True: 474, False: 210k]
  ------------------
15677|  79.0k|            case 0x83:
  ------------------
  |  Branch (15677:13): [True: 509, False: 210k]
  ------------------
15678|  79.4k|            case 0x84:
  ------------------
  |  Branch (15678:13): [True: 312, False: 210k]
  ------------------
15679|  79.6k|            case 0x85:
  ------------------
  |  Branch (15679:13): [True: 254, False: 210k]
  ------------------
15680|  79.9k|            case 0x86:
  ------------------
  |  Branch (15680:13): [True: 329, False: 210k]
  ------------------
15681|  80.4k|            case 0x87:
  ------------------
  |  Branch (15681:13): [True: 459, False: 210k]
  ------------------
15682|  80.7k|            case 0x88:
  ------------------
  |  Branch (15682:13): [True: 332, False: 210k]
  ------------------
15683|  81.0k|            case 0x89:
  ------------------
  |  Branch (15683:13): [True: 254, False: 210k]
  ------------------
15684|  81.3k|            case 0x8A:
  ------------------
  |  Branch (15684:13): [True: 356, False: 210k]
  ------------------
15685|  81.6k|            case 0x8B:
  ------------------
  |  Branch (15685:13): [True: 303, False: 210k]
  ------------------
15686|  81.9k|            case 0x8C:
  ------------------
  |  Branch (15686:13): [True: 256, False: 210k]
  ------------------
15687|  82.2k|            case 0x8D:
  ------------------
  |  Branch (15687:13): [True: 319, False: 210k]
  ------------------
15688|  82.6k|            case 0x8E:
  ------------------
  |  Branch (15688:13): [True: 343, False: 210k]
  ------------------
15689|  82.9k|            case 0x8F:
  ------------------
  |  Branch (15689:13): [True: 377, False: 210k]
  ------------------
15690|  83.4k|            case 0x90:
  ------------------
  |  Branch (15690:13): [True: 487, False: 210k]
  ------------------
15691|  83.9k|            case 0x91:
  ------------------
  |  Branch (15691:13): [True: 481, False: 210k]
  ------------------
15692|  84.3k|            case 0x92:
  ------------------
  |  Branch (15692:13): [True: 349, False: 210k]
  ------------------
15693|  84.6k|            case 0x93:
  ------------------
  |  Branch (15693:13): [True: 358, False: 210k]
  ------------------
15694|  84.9k|            case 0x94:
  ------------------
  |  Branch (15694:13): [True: 281, False: 210k]
  ------------------
15695|  85.2k|            case 0x95:
  ------------------
  |  Branch (15695:13): [True: 257, False: 210k]
  ------------------
15696|  85.6k|            case 0x96:
  ------------------
  |  Branch (15696:13): [True: 485, False: 210k]
  ------------------
15697|  86.2k|            case 0x97:
  ------------------
  |  Branch (15697:13): [True: 568, False: 210k]
  ------------------
15698|  86.2k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15699|       |
15700|    313|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15700:13): [True: 313, False: 210k]
  ------------------
15701|    819|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15701:13): [True: 506, False: 210k]
  ------------------
15702|  1.08k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15702:13): [True: 263, False: 210k]
  ------------------
15703|  1.35k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15703:13): [True: 274, False: 210k]
  ------------------
15704|  1.35k|            {
15705|  1.35k|                std::uint64_t len{};
15706|  1.35k|                std::size_t size{};
15707|  1.35k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "array") && enter_array(size);
  ------------------
  |  Branch (15707:24): [True: 1.31k, False: 39]
  |  Branch (15707:50): [True: 1.31k, False: 1]
  |  Branch (15707:97): [True: 1.19k, False: 125]
  ------------------
15708|  1.08k|            }
15709|       |
15710|  6.84k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (15710:13): [True: 6.84k, False: 204k]
  ------------------
15711|  6.84k|                return enter_array(detail::unknown_size());
15712|       |
15713|       |            // map (0x00..0x17 pairs of data items follow)
15714|  2.06k|            case 0xA0:
  ------------------
  |  Branch (15714:13): [True: 2.06k, False: 208k]
  ------------------
15715|  10.6k|            case 0xA1:
  ------------------
  |  Branch (15715:13): [True: 8.61k, False: 202k]
  ------------------
15716|  12.2k|            case 0xA2:
  ------------------
  |  Branch (15716:13): [True: 1.61k, False: 209k]
  ------------------
15717|  12.8k|            case 0xA3:
  ------------------
  |  Branch (15717:13): [True: 511, False: 210k]
  ------------------
15718|  13.0k|            case 0xA4:
  ------------------
  |  Branch (15718:13): [True: 280, False: 210k]
  ------------------
15719|  13.3k|            case 0xA5:
  ------------------
  |  Branch (15719:13): [True: 234, False: 210k]
  ------------------
15720|  13.6k|            case 0xA6:
  ------------------
  |  Branch (15720:13): [True: 379, False: 210k]
  ------------------
15721|  13.9k|            case 0xA7:
  ------------------
  |  Branch (15721:13): [True: 262, False: 210k]
  ------------------
15722|  14.5k|            case 0xA8:
  ------------------
  |  Branch (15722:13): [True: 547, False: 210k]
  ------------------
15723|  14.7k|            case 0xA9:
  ------------------
  |  Branch (15723:13): [True: 252, False: 210k]
  ------------------
15724|  15.0k|            case 0xAA:
  ------------------
  |  Branch (15724:13): [True: 340, False: 210k]
  ------------------
15725|  15.3k|            case 0xAB:
  ------------------
  |  Branch (15725:13): [True: 272, False: 210k]
  ------------------
15726|  15.5k|            case 0xAC:
  ------------------
  |  Branch (15726:13): [True: 209, False: 210k]
  ------------------
15727|  15.8k|            case 0xAD:
  ------------------
  |  Branch (15727:13): [True: 222, False: 210k]
  ------------------
15728|  16.0k|            case 0xAE:
  ------------------
  |  Branch (15728:13): [True: 228, False: 210k]
  ------------------
15729|  16.3k|            case 0xAF:
  ------------------
  |  Branch (15729:13): [True: 362, False: 210k]
  ------------------
15730|  16.6k|            case 0xB0:
  ------------------
  |  Branch (15730:13): [True: 297, False: 210k]
  ------------------
15731|  17.2k|            case 0xB1:
  ------------------
  |  Branch (15731:13): [True: 517, False: 210k]
  ------------------
15732|  17.4k|            case 0xB2:
  ------------------
  |  Branch (15732:13): [True: 236, False: 210k]
  ------------------
15733|  17.6k|            case 0xB3:
  ------------------
  |  Branch (15733:13): [True: 241, False: 210k]
  ------------------
15734|  18.0k|            case 0xB4:
  ------------------
  |  Branch (15734:13): [True: 349, False: 210k]
  ------------------
15735|  18.1k|            case 0xB5:
  ------------------
  |  Branch (15735:13): [True: 110, False: 210k]
  ------------------
15736|  18.4k|            case 0xB6:
  ------------------
  |  Branch (15736:13): [True: 305, False: 210k]
  ------------------
15737|  18.8k|            case 0xB7:
  ------------------
  |  Branch (15737:13): [True: 378, False: 210k]
  ------------------
15738|  18.8k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15739|       |
15740|    346|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15740:13): [True: 346, False: 210k]
  ------------------
15741|    828|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15741:13): [True: 482, False: 210k]
  ------------------
15742|    934|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15742:13): [True: 106, False: 210k]
  ------------------
15743|  1.16k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15743:13): [True: 232, False: 210k]
  ------------------
15744|  1.16k|            {
15745|  1.16k|                std::uint64_t len{};
15746|  1.16k|                std::size_t size{};
15747|  1.16k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (15747:24): [True: 1.12k, False: 39]
  |  Branch (15747:50): [True: 1.12k, False: 1]
  |  Branch (15747:95): [True: 1.03k, False: 93]
  ------------------
15748|    934|            }
15749|       |
15750|  1.05k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (15750:13): [True: 1.05k, False: 209k]
  ------------------
15751|  1.05k|                return enter_object(detail::unknown_size());
15752|       |
15753|      2|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (15753:13): [True: 2, False: 211k]
  ------------------
15754|      4|            case 0xC1:
  ------------------
  |  Branch (15754:13): [True: 2, False: 211k]
  ------------------
15755|      5|            case 0xC2:
  ------------------
  |  Branch (15755:13): [True: 1, False: 211k]
  ------------------
15756|      6|            case 0xC3:
  ------------------
  |  Branch (15756:13): [True: 1, False: 211k]
  ------------------
15757|      9|            case 0xC4:
  ------------------
  |  Branch (15757:13): [True: 3, False: 211k]
  ------------------
15758|     10|            case 0xC5:
  ------------------
  |  Branch (15758:13): [True: 1, False: 211k]
  ------------------
15759|     12|            case 0xC6:
  ------------------
  |  Branch (15759:13): [True: 2, False: 211k]
  ------------------
15760|     13|            case 0xC7:
  ------------------
  |  Branch (15760:13): [True: 1, False: 211k]
  ------------------
15761|     14|            case 0xC8:
  ------------------
  |  Branch (15761:13): [True: 1, False: 211k]
  ------------------
15762|     16|            case 0xC9:
  ------------------
  |  Branch (15762:13): [True: 2, False: 211k]
  ------------------
15763|     17|            case 0xCA:
  ------------------
  |  Branch (15763:13): [True: 1, False: 211k]
  ------------------
15764|     19|            case 0xCB:
  ------------------
  |  Branch (15764:13): [True: 2, False: 211k]
  ------------------
15765|     20|            case 0xCC:
  ------------------
  |  Branch (15765:13): [True: 1, False: 211k]
  ------------------
15766|     21|            case 0xCD:
  ------------------
  |  Branch (15766:13): [True: 1, False: 211k]
  ------------------
15767|     22|            case 0xCE:
  ------------------
  |  Branch (15767:13): [True: 1, False: 211k]
  ------------------
15768|     23|            case 0xCF:
  ------------------
  |  Branch (15768:13): [True: 1, False: 211k]
  ------------------
15769|     25|            case 0xD0:
  ------------------
  |  Branch (15769:13): [True: 2, False: 211k]
  ------------------
15770|     26|            case 0xD1:
  ------------------
  |  Branch (15770:13): [True: 1, False: 211k]
  ------------------
15771|     27|            case 0xD2:
  ------------------
  |  Branch (15771:13): [True: 1, False: 211k]
  ------------------
15772|     28|            case 0xD3:
  ------------------
  |  Branch (15772:13): [True: 1, False: 211k]
  ------------------
15773|     31|            case 0xD4:
  ------------------
  |  Branch (15773:13): [True: 3, False: 211k]
  ------------------
15774|     33|            case 0xD5:
  ------------------
  |  Branch (15774:13): [True: 2, False: 211k]
  ------------------
15775|     35|            case 0xD6:
  ------------------
  |  Branch (15775:13): [True: 2, False: 211k]
  ------------------
15776|     37|            case 0xD7:
  ------------------
  |  Branch (15776:13): [True: 2, False: 211k]
  ------------------
15777|     37|            {
15778|     37|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (15778:21): [True: 37, False: 0]
  ------------------
15779|     37|                {
15780|     37|                    return unexpected_byte("invalid byte", "value");
15781|     37|                }
15782|       |
15783|       |                // ignore and store: the tag value is already in the head, so
15784|       |                // there is nothing left to read here; the tagged value that
15785|       |                // follows is read by the loop in parse_cbor_internal() rather
15786|       |                // than by recursing here
15787|      0|                tag_pending = true;
15788|      0|                return true;
15789|     37|            }
15790|       |
15791|      2|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (15791:13): [True: 2, False: 211k]
  ------------------
15792|      3|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (15792:13): [True: 1, False: 211k]
  ------------------
15793|      4|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (15793:13): [True: 1, False: 211k]
  ------------------
15794|      5|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (15794:13): [True: 1, False: 211k]
  ------------------
15795|      5|            {
15796|      5|                switch (tag_handler)
15797|      5|                {
15798|      5|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (15798:21): [True: 5, False: 0]
  ------------------
15799|      5|                    {
15800|      5|                        return unexpected_byte("invalid byte", "value");
15801|      0|                    }
15802|       |
15803|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (15803:21): [True: 0, False: 5]
  ------------------
15804|      0|                    {
15805|       |                        // ignore the tag's binary subtype argument
15806|      0|                        std::uint64_t subtype_to_ignore{};
15807|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (15807:29): [True: 0, False: 0]
  ------------------
15808|      0|                        {
15809|      0|                            return false;
15810|      0|                        }
15811|       |                        // the tagged value follows; it is read by the loop in
15812|       |                        // parse_cbor_internal() rather than by recursing here
15813|      0|                        tag_pending = true;
15814|      0|                        return true;
15815|      0|                    }
15816|       |
15817|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (15817:21): [True: 0, False: 5]
  ------------------
15818|      0|                    {
15819|       |                        // use binary subtype and store in a binary container
15820|      0|                        std::uint64_t subtype{};
15821|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (15821:29): [True: 0, False: 0]
  ------------------
15822|      0|                        {
15823|      0|                            return false;
15824|      0|                        }
15825|      0|                        binary_t b;
15826|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
15827|       |
15828|      0|                        get();
15829|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
15830|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (15830:30): [True: 0, False: 0]
  |  Branch (15830:49): [True: 0, False: 0]
  |  Branch (15830:69): [True: 0, False: 0]
  ------------------
15831|      0|                        {
15832|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15832:36): [True: 0, False: 0]
  |  Branch (15832:58): [True: 0, False: 0]
  ------------------
15833|      0|                        }
15834|       |
15835|       |                        // not a byte string: the tagged value, whose first byte
15836|       |                        // was just read, is read by the caller like for ignore
15837|      0|                        tag_pending = true;
15838|      0|                        item_read = true;
15839|      0|                        return true;
15840|      0|                    }
15841|       |
15842|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (15842:21): [True: 0, False: 5]
  ------------------
15843|      0|                        JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15843:25): [Folded, False: 0]
  ------------------
15844|      0|                        return false;        // LCOV_EXCL_LINE
15845|      5|                }
15846|      5|            }
15847|       |
15848|  2.02k|            case 0xF4: // false
  ------------------
  |  Branch (15848:13): [True: 2.02k, False: 208k]
  ------------------
15849|  2.02k|                return sax->boolean(false);
15850|       |
15851|  1.80k|            case 0xF5: // true
  ------------------
  |  Branch (15851:13): [True: 1.80k, False: 209k]
  ------------------
15852|  1.80k|                return sax->boolean(true);
15853|       |
15854|  2.71k|            case 0xF6: // null
  ------------------
  |  Branch (15854:13): [True: 2.71k, False: 208k]
  ------------------
15855|  2.71k|                return sax->null();
15856|       |
15857|  5.85k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (15857:13): [True: 5.85k, False: 205k]
  ------------------
15858|  5.85k|                return get_half_float(false);
15859|       |
15860|    662|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (15860:13): [True: 662, False: 210k]
  ------------------
15861|    662|            {
15862|    662|                float number{};
15863|    662|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15863:24): [True: 651, False: 11]
  |  Branch (15863:46): [True: 651, False: 0]
  ------------------
15864|      5|            }
15865|       |
15866|  1.16k|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (15866:13): [True: 1.16k, False: 209k]
  ------------------
15867|  1.16k|            {
15868|  1.16k|                double number{};
15869|  1.16k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15869:24): [True: 1.15k, False: 13]
  |  Branch (15869:46): [True: 1.15k, False: 0]
  ------------------
15870|      5|            }
15871|       |
15872|     68|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (15872:13): [True: 68, False: 210k]
  ------------------
15873|     68|            {
15874|     68|                return unexpected_byte("invalid byte", "value");
15875|      5|            }
15876|   211k|        }
15877|   211k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE13emit_unsignedIhEEbT_:
18799|    748|    {
18800|    748|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    748|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 748, False: 0]
  |  |  ------------------
  ------------------
18801|    748|        {
18802|    748|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    748|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    748|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE13emit_unsignedItEEbT_:
18799|    367|    {
18800|    367|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    367|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 367, False: 0]
  |  |  ------------------
  ------------------
18801|    367|        {
18802|    367|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    367|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    367|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE13emit_unsignedIjEEbT_:
18799|    319|    {
18800|    319|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    319|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 319, False: 0]
  |  |  ------------------
  ------------------
18801|    319|        {
18802|    319|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    319|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    319|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE25get_cbor_negative_integerIhEEbv:
15467|    470|    {
15468|    470|        NumberType number{};
15469|    470|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    470|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 470]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    470|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    470|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 466, False: 4]
  |  |  ------------------
  ------------------
15478|    466|        {
15479|    466|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    466|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      4|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    470|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE25get_cbor_negative_integerItEEbv:
15467|    486|    {
15468|    486|        NumberType number{};
15469|    486|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    486|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 486]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    486|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    486|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 480, False: 6]
  |  |  ------------------
  ------------------
15478|    480|        {
15479|    480|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    480|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      6|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    486|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE25get_cbor_negative_integerIjEEbv:
15467|    336|    {
15468|    336|        NumberType number{};
15469|    336|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    336|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 336]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    336|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    336|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 328, False: 8]
  |  |  ------------------
  ------------------
15478|    328|        {
15479|    328|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    328|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      8|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    336|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE25get_cbor_negative_integerImEEbv:
15467|    827|    {
15468|    827|        NumberType number{};
15469|    827|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    827|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 827]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    827|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    827|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 648, False: 179]
  |  |  ------------------
  ------------------
15478|    648|        {
15479|    648|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    648|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|    179|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    827|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15get_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
16193|  26.3k|    {
16194|       |        // read chunks iteratively, but reject a second indefinite-length
16195|       |        // level as required by RFC 8949, Section 3.2.3
16196|  26.3k|        bool indefinite = false;
16197|       |
16198|  28.9k|        while (true)
  ------------------
  |  Branch (16198:16): [True: 28.3k, Folded]
  ------------------
16199|  28.3k|        {
16200|  28.3k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1667|  28.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 28.3k]
  |  |  ------------------
  ------------------
16201|      0|            {
16202|      0|                return false;
16203|      0|            }
16204|       |
16205|  28.3k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (16205:17): [True: 720, False: 27.6k]
  ------------------
16206|    720|            {
16207|    720|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|    720|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3, False: 717]
  |  |  ------------------
  ------------------
16208|      3|                {
16209|      3|                    return cbor_indefinite_string_error("binary array", "binary");
16210|      3|                }
16211|    717|                indefinite = true;
16212|    717|                get();
16213|    717|                continue;
16214|    720|            }
16215|       |
16216|       |            // a break marker closes the indefinite-length string; outside
16217|       |            // of one it falls through to the error below
16218|  27.6k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16218:17): [True: 1.97k, False: 25.6k]
  |  Branch (16218:31): [True: 615, False: 1.35k]
  ------------------
16219|    615|            {
16220|    615|                return true;
16221|    615|            }
16222|       |
16223|  27.0k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1667|  27.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 27.0k]
  |  |  ------------------
  ------------------
16224|      0|            {
16225|      0|                return false;
16226|      0|            }
16227|       |
16228|  27.0k|            if (!indefinite)
  ------------------
  |  Branch (16228:17): [True: 25.2k, False: 1.80k]
  ------------------
16229|  25.2k|            {
16230|  25.2k|                return true;
16231|  25.2k|            }
16232|       |
16233|  1.80k|            get();
16234|  1.80k|        }
16235|  26.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
16114|  27.0k|    {
16115|  27.0k|        switch (current)
16116|  27.0k|        {
16117|       |            // Binary data (0x00..0x17 bytes follow)
16118|  20.4k|            case 0x40:
  ------------------
  |  Branch (16118:13): [True: 20.4k, False: 6.54k]
  ------------------
16119|  22.1k|            case 0x41:
  ------------------
  |  Branch (16119:13): [True: 1.61k, False: 25.4k]
  ------------------
16120|  22.5k|            case 0x42:
  ------------------
  |  Branch (16120:13): [True: 416, False: 26.6k]
  ------------------
16121|  22.6k|            case 0x43:
  ------------------
  |  Branch (16121:13): [True: 166, False: 26.8k]
  ------------------
16122|  22.8k|            case 0x44:
  ------------------
  |  Branch (16122:13): [True: 123, False: 26.9k]
  ------------------
16123|  22.9k|            case 0x45:
  ------------------
  |  Branch (16123:13): [True: 190, False: 26.8k]
  ------------------
16124|  23.1k|            case 0x46:
  ------------------
  |  Branch (16124:13): [True: 140, False: 26.8k]
  ------------------
16125|  23.2k|            case 0x47:
  ------------------
  |  Branch (16125:13): [True: 118, False: 26.9k]
  ------------------
16126|  23.4k|            case 0x48:
  ------------------
  |  Branch (16126:13): [True: 151, False: 26.8k]
  ------------------
16127|  23.5k|            case 0x49:
  ------------------
  |  Branch (16127:13): [True: 95, False: 26.9k]
  ------------------
16128|  23.6k|            case 0x4A:
  ------------------
  |  Branch (16128:13): [True: 105, False: 26.9k]
  ------------------
16129|  23.7k|            case 0x4B:
  ------------------
  |  Branch (16129:13): [True: 115, False: 26.9k]
  ------------------
16130|  23.8k|            case 0x4C:
  ------------------
  |  Branch (16130:13): [True: 115, False: 26.9k]
  ------------------
16131|  23.9k|            case 0x4D:
  ------------------
  |  Branch (16131:13): [True: 79, False: 26.9k]
  ------------------
16132|  23.9k|            case 0x4E:
  ------------------
  |  Branch (16132:13): [True: 69, False: 26.9k]
  ------------------
16133|  24.0k|            case 0x4F:
  ------------------
  |  Branch (16133:13): [True: 55, False: 26.9k]
  ------------------
16134|  24.1k|            case 0x50:
  ------------------
  |  Branch (16134:13): [True: 77, False: 26.9k]
  ------------------
16135|  24.1k|            case 0x51:
  ------------------
  |  Branch (16135:13): [True: 50, False: 26.9k]
  ------------------
16136|  24.2k|            case 0x52:
  ------------------
  |  Branch (16136:13): [True: 54, False: 26.9k]
  ------------------
16137|  24.2k|            case 0x53:
  ------------------
  |  Branch (16137:13): [True: 52, False: 26.9k]
  ------------------
16138|  24.3k|            case 0x54:
  ------------------
  |  Branch (16138:13): [True: 43, False: 26.9k]
  ------------------
16139|  24.3k|            case 0x55:
  ------------------
  |  Branch (16139:13): [True: 53, False: 26.9k]
  ------------------
16140|  24.4k|            case 0x56:
  ------------------
  |  Branch (16140:13): [True: 53, False: 26.9k]
  ------------------
16141|  24.4k|            case 0x57:
  ------------------
  |  Branch (16141:13): [True: 61, False: 26.9k]
  ------------------
16142|  24.4k|            {
16143|  24.4k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
16144|  24.4k|            }
16145|       |
16146|    966|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (16146:13): [True: 966, False: 26.0k]
  ------------------
16147|    966|            {
16148|    966|                std::uint8_t len{};
16149|    966|                return get_number(len) &&
  ------------------
  |  Branch (16149:24): [True: 959, False: 7]
  ------------------
16150|    959|                       get_binary(len, result);
  ------------------
  |  Branch (16150:24): [True: 931, False: 28]
  ------------------
16151|  24.4k|            }
16152|       |
16153|    686|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (16153:13): [True: 686, False: 26.3k]
  ------------------
16154|    686|            {
16155|    686|                std::uint16_t len{};
16156|    686|                return get_number(len) &&
  ------------------
  |  Branch (16156:24): [True: 677, False: 9]
  ------------------
16157|    677|                       get_binary(len, result);
  ------------------
  |  Branch (16157:24): [True: 621, False: 56]
  ------------------
16158|  24.4k|            }
16159|       |
16160|    445|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (16160:13): [True: 445, False: 26.5k]
  ------------------
16161|    445|            {
16162|    445|                std::uint32_t len{};
16163|    445|                return get_number(len) &&
  ------------------
  |  Branch (16163:24): [True: 431, False: 14]
  ------------------
16164|    431|                       get_binary(len, result);
  ------------------
  |  Branch (16164:24): [True: 366, False: 65]
  ------------------
16165|  24.4k|            }
16166|       |
16167|    422|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (16167:13): [True: 422, False: 26.6k]
  ------------------
16168|    422|            {
16169|    422|                std::uint64_t len{};
16170|    422|                return get_number(len) &&
  ------------------
  |  Branch (16170:24): [True: 408, False: 14]
  ------------------
16171|    408|                       get_binary(len, result);
  ------------------
  |  Branch (16171:24): [True: 286, False: 122]
  ------------------
16172|  24.4k|            }
16173|       |
16174|     31|            default:
  ------------------
  |  Branch (16174:13): [True: 31, False: 27.0k]
  ------------------
16175|     31|            {
16176|     31|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (16176:133): [True: 31, False: 0]
  ------------------
16177|  24.4k|            }
16178|  27.0k|        }
16179|  27.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  24.9k|    {
18973|  24.9k|        return get_bytes(len, "binary", result);
18974|  24.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  24.9k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  24.9k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  28.7k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 4.06k, False: 24.6k]
  ------------------
19003|  4.06k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  4.06k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 4.02k, False: 42]
  ------------------
19007|  4.06k|                                       ? static_cast<std::size_t>(len)
19008|  4.06k|                                       : chunk_size;
19009|  4.06k|            const std::size_t old_size = result.size();
19010|  4.06k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  4.06k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  4.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 4.06k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  4.06k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  4.06k|            chars_read += bytes_read;
19018|  4.06k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  4.06k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 228, False: 3.83k]
  |  |  ------------------
  ------------------
19019|    228|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    228|                result.resize(old_size + bytes_read);
19024|    228|                ++chars_read;
19025|    228|                current = char_traits<char_type>::eof();
19026|    228|                return unexpect_eof(context);
19027|    228|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  3.83k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  3.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 3.83k, False: 0]
  ------------------
19030|  3.83k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  3.83k|        }
19032|  24.6k|        return true;
19033|  24.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    959|    {
18973|    959|        return get_bytes(len, "binary", result);
18974|    959|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    959|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    959|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.66k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 730, False: 931]
  ------------------
19003|    730|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    730|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 730, False: 0]
  ------------------
19007|    730|                                       ? static_cast<std::size_t>(len)
19008|    730|                                       : chunk_size;
19009|    730|            const std::size_t old_size = result.size();
19010|    730|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    730|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    730|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 730, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    730|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    730|            chars_read += bytes_read;
19018|    730|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    730|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 28, False: 702]
  |  |  ------------------
  ------------------
19019|     28|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     28|                result.resize(old_size + bytes_read);
19024|     28|                ++chars_read;
19025|     28|                current = char_traits<char_type>::eof();
19026|     28|                return unexpect_eof(context);
19027|     28|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    702|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    702|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 702, False: 0]
  ------------------
19030|    702|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    702|        }
19032|    931|        return true;
19033|    959|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    677|    {
18973|    677|        return get_bytes(len, "binary", result);
18974|    677|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    677|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    677|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.09k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 469, False: 621]
  ------------------
19003|    469|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    469|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 449, False: 20]
  ------------------
19007|    469|                                       ? static_cast<std::size_t>(len)
19008|    469|                                       : chunk_size;
19009|    469|            const std::size_t old_size = result.size();
19010|    469|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    469|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    469|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 469, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    469|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    469|            chars_read += bytes_read;
19018|    469|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    469|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 56, False: 413]
  |  |  ------------------
  ------------------
19019|     56|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     56|                result.resize(old_size + bytes_read);
19024|     56|                ++chars_read;
19025|     56|                current = char_traits<char_type>::eof();
19026|     56|                return unexpect_eof(context);
19027|     56|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    413|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    413|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 413, False: 0]
  ------------------
19030|    413|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    413|        }
19032|    621|        return true;
19033|    677|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_binaryImEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    408|    {
18973|    408|        return get_bytes(len, "binary", result);
18974|    408|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    408|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    408|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    492|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 206, False: 286]
  ------------------
19003|    206|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    206|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 106, False: 100]
  ------------------
19007|    206|                                       ? static_cast<std::size_t>(len)
19008|    206|                                       : chunk_size;
19009|    206|            const std::size_t old_size = result.size();
19010|    206|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    206|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    206|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 206, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    206|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    206|            chars_read += bytes_read;
19018|    206|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    206|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 122, False: 84]
  |  |  ------------------
  ------------------
19019|    122|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    122|                result.resize(old_size + bytes_read);
19024|    122|                ++chars_read;
19025|    122|                current = char_traits<char_type>::eof();
19026|    122|                return unexpect_eof(context);
19027|    122|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|     84|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|     84|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 84, False: 0]
  ------------------
19030|     84|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|     84|        }
19032|    286|        return true;
19033|    408|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE11enter_arrayEmm:
15094|  94.4k|    {
15095|  94.4k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  94.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE17get_cbor_argumentERm:
16251|  2.52k|    {
16252|  2.52k|        switch (current & 0x1F)
16253|  2.52k|        {
16254|    659|            case 0x18: // 1 byte
  ------------------
  |  Branch (16254:13): [True: 659, False: 1.86k]
  ------------------
16255|    659|            {
16256|    659|                std::uint8_t n{};
16257|    659|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    659|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 659]
  |  |  ------------------
  ------------------
16258|      0|                {
16259|      0|                    return false;
16260|      0|                }
16261|    659|                value = n;
16262|    659|                return true;
16263|    659|            }
16264|       |
16265|    988|            case 0x19: // 2 bytes
  ------------------
  |  Branch (16265:13): [True: 988, False: 1.53k]
  ------------------
16266|    988|            {
16267|    988|                std::uint16_t n{};
16268|    988|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    988|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 988]
  |  |  ------------------
  ------------------
16269|      0|                {
16270|      0|                    return false;
16271|      0|                }
16272|    988|                value = n;
16273|    988|                return true;
16274|    988|            }
16275|       |
16276|    369|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (16276:13): [True: 369, False: 2.15k]
  ------------------
16277|    369|            {
16278|    369|                std::uint32_t n{};
16279|    369|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    369|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 369]
  |  |  ------------------
  ------------------
16280|      0|                {
16281|      0|                    return false;
16282|      0|                }
16283|    369|                value = n;
16284|    369|                return true;
16285|    369|            }
16286|       |
16287|    506|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (16287:13): [True: 506, False: 2.01k]
  ------------------
16288|    506|            {
16289|    506|                std::uint64_t n{};
16290|    506|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    506|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 506]
  |  |  ------------------
  ------------------
16291|      0|                {
16292|      0|                    return false;
16293|      0|                }
16294|    506|                value = n;
16295|    506|                return true;
16296|    506|            }
16297|       |
16298|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (16298:13): [True: 0, False: 2.52k]
  ------------------
16299|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (16299:17): [Folded, False: 0]
  ------------------
16300|      0|                return false;        // LCOV_EXCL_LINE
16301|  2.52k|        }
16302|  2.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE23get_cbor_container_sizeEmRmPKc:
16319|  2.44k|    {
16320|  2.44k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1667|  4.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2, False: 2.44k]
  |  |  |  Branch (1667:94): [True: 0, False: 2.44k]
  |  |  |  Branch (1667:94): [True: 2, False: 2.44k]
  |  |  ------------------
  ------------------
16321|      2|        {
16322|      2|            return container_size_error(context);
16323|      2|        }
16324|  2.44k|        result = conditional_static_cast<std::size_t>(len);
16325|  2.44k|        return true;
16326|  2.44k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE20container_size_errorEPKc:
19074|      2|    {
19075|      2|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
19076|      2|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
19077|      2|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE12enter_objectEmm:
15100|  21.0k|    {
15101|  21.0k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  21.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15unexpected_byteEPKcSQ_:
19130|    110|    {
19131|    110|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    110|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE14get_half_floatEb:
18845|  5.85k|    {
18846|  5.85k|        const auto byte1_raw = get();
18847|  5.85k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  5.85k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.85k]
  |  |  ------------------
  ------------------
18848|      0|        {
18849|      0|            return false;
18850|      0|        }
18851|  5.85k|        const auto byte2_raw = get();
18852|  5.85k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  5.85k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.85k]
  |  |  ------------------
  ------------------
18853|      0|        {
18854|      0|            return false;
18855|      0|        }
18856|       |
18857|  5.85k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
18858|  5.85k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
18859|       |
18860|       |        // Code from RFC 8949, Appendix D, Figure 3:
18861|       |        // As half-precision floating-point numbers were only added
18862|       |        // to IEEE 754 in 2008, today's programming platforms often
18863|       |        // still only have limited support for them. It is very
18864|       |        // easy to include at least decoding support for them even
18865|       |        // without such support. An example of a small decoder for
18866|       |        // half-precision floating-point numbers in the C language
18867|       |        // is shown in Fig. 3.
18868|  5.85k|        const auto half = little_endian
  ------------------
  |  Branch (18868:27): [True: 0, False: 5.85k]
  ------------------
18869|  5.85k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
18870|  5.85k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
18871|  5.85k|        const double val = [&half]
18872|  5.85k|        {
18873|  5.85k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  5.85k|            const unsigned int mant = half & 0x3FFu;
18875|  5.85k|            JSON_ASSERT(exp <= 31);
18876|  5.85k|            JSON_ASSERT(mant <= 1023);
18877|  5.85k|            switch (exp)
18878|  5.85k|            {
18879|  5.85k|                case 0:
18880|  5.85k|                    return std::ldexp(mant, -24);
18881|  5.85k|                case 31:
18882|  5.85k|                    return (mant == 0)
18883|  5.85k|                    ? std::numeric_limits<double>::infinity()
18884|  5.85k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  5.85k|                default:
18886|  5.85k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  5.85k|            }
18888|  5.85k|        }();
18889|  5.85k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (18889:34): [True: 3.52k, False: 2.33k]
  ------------------
18890|  5.85k|                                 ? static_cast<number_float_t>(-val)
18891|  5.85k|                                 : static_cast<number_float_t>(val), "");
18892|  5.85k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE14get_half_floatEbENKUlvE_clEv:
18872|  5.83k|        {
18873|  5.83k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  5.83k|            const unsigned int mant = half & 0x3FFu;
18875|  5.83k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2591|  5.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18875:13): [True: 5.83k, False: 0]
  ------------------
18876|  5.83k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2591|  5.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18876:13): [True: 5.83k, False: 0]
  ------------------
18877|  5.83k|            switch (exp)
18878|  5.83k|            {
18879|  1.26k|                case 0:
  ------------------
  |  Branch (18879:17): [True: 1.26k, False: 4.57k]
  ------------------
18880|  1.26k|                    return std::ldexp(mant, -24);
18881|  1.21k|                case 31:
  ------------------
  |  Branch (18881:17): [True: 1.21k, False: 4.62k]
  ------------------
18882|  1.21k|                    return (mant == 0)
  ------------------
  |  Branch (18882:28): [True: 638, False: 576]
  ------------------
18883|  1.21k|                    ? std::numeric_limits<double>::infinity()
18884|  1.21k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  3.36k|                default:
  ------------------
  |  Branch (18885:17): [True: 3.36k, False: 2.47k]
  ------------------
18886|  3.36k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  5.83k|            }
18888|  5.83k|        }();
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIfLb0EEEbRT_:
18739|    662|    {
18740|       |        // read in the original format
18741|       |
18742|    662|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    662|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 662]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    662|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 651, False: 11]
  |  Branch (18746:34): [Folded, False: 651]
  |  Branch (18746:57): [True: 0, False: 651]
  ------------------
18747|    651|        {
18748|    651|            byte_swap(result);
18749|    651|        }
18750|    662|        return true;
18751|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIfEEbRT_PKc:
18667|    662|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    662|        auto new_chars_read = ia.get_elements(&dest);
18671|    662|        chars_read += new_chars_read;
18672|    662|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    662|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 651]
  |  |  ------------------
  ------------------
18673|     11|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     11|            ++chars_read;
18676|     11|            static_cast<void>(report_eof(context));
18677|     11|            return false;
18678|     11|        }
18679|    651|        return true;
18680|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIfEEmPT_m:
 8644|    662|    {
 8645|    662|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIfEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    662|    {
 8725|    662|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  3.28k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 2.62k, False: 651]
  ------------------
 8727|  2.62k|        {
 8728|  2.62k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  2.62k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.61k, False: 11]
  |  |  ------------------
  ------------------
 8729|  2.61k|            {
 8730|  2.61k|                ptr[read_index] = static_cast<char>(*current);
 8731|  2.61k|                std::advance(current, 1);
 8732|  2.61k|            }
 8733|     11|            else
 8734|     11|            {
 8735|     11|                return read_index;
 8736|     11|            }
 8737|  2.62k|        }
 8738|    651|        return count * sizeof(T);
 8739|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIfEEvRT_:
18698|    651|    {
18699|    651|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    651|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  1.95k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 1.30k, False: 651]
  ------------------
18715|  1.30k|            {
18716|  1.30k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  1.30k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    651|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10emit_floatIfEEbT_:
18825|    651|    {
18826|    651|        const auto result = static_cast<number_float_t>(number);
18827|    651|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 651]
  |  |  |  Branch (1667:94): [True: 646, False: 5]
  |  |  |  Branch (1667:94): [True: 0, False: 646]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    651|        return sax->number_float(result, "");
18832|    651|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE10get_numberIdLb0EEEbRT_:
18739|  1.16k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.16k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.16k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.16k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.15k, False: 13]
  |  Branch (18746:34): [Folded, False: 1.15k]
  |  Branch (18746:57): [True: 0, False: 1.15k]
  ------------------
18747|  1.15k|        {
18748|  1.15k|            byte_swap(result);
18749|  1.15k|        }
18750|  1.16k|        return true;
18751|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE3getEv:
18652|   260k|    {
18653|   260k|        ++chars_read;
18654|   260k|        return current = ia.get_character();
18655|   260k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E13get_characterEv:
 8590|   260k|    {
 8591|   260k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   260k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 255k, False: 4.97k]
  |  |  ------------------
  ------------------
 8592|   255k|        {
 8593|   255k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   255k|            std::advance(current, 1);
 8595|   255k|            return result;
 8596|   255k|        }
 8597|       |
 8598|  4.97k|        ++eof_reads;
 8599|  4.97k|        return char_traits<char_type>::eof();
 8600|   260k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15last_byte_errorENS1_12exception_idERKSC_PKcST_:
19116|    398|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    398|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    398|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 116, False: 282]
  ------------------
19120|    398|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEED2Ev:
14954|  6.72k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEED2Ev:
13881|  6.72k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__121__list_const_iteratorIhPvEES6_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES8_S9_:
 9007|  6.72k|{
 9008|  6.72k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  6.72k|    return factory_type::create(first, last);
 9010|  6.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryINSt3__121__list_const_iteratorIhPvEES6_vE6createES6_S6_:
 8935|  6.72k|    {
 8936|  6.72k|        return adapter_type(std::move(first), std::move(last));
 8937|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_EC2ES6_S6_:
 8586|  6.72k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  6.72k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIRP8_IO_FILEEESE_OT_bbNS0_6detail18cbor_tag_handler_tENSL_15error_handler_tE:
36583|  6.72k|    {
36584|  6.72k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
36585|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail18file_input_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  6.72k|    {
36386|  6.72k|        basic_json result;
36387|  6.72k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  6.72k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  6.72k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 6.72k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  6.72k|        return result;
36394|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  6.72k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  6.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  6.72k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  6.72k|    {
14946|  6.72k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  6.72k|    {
14970|  6.72k|        sax = sax_;
14971|  6.72k|        container_stack.clear();
14972|  6.72k|        bon8_pushback_size = 0;
14973|  6.72k|        bool result = false;
14974|       |
14975|  6.72k|        switch (input_format)
14976|  6.72k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 6.72k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|  6.72k|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 6.72k, False: 0]
  ------------------
14982|  6.72k|                result = parse_cbor_internal(tag_handler);
14983|  6.72k|                break;
14984|       |
14985|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 0, False: 6.72k]
  ------------------
14986|      0|                result = parse_msgpack_internal();
14987|      0|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 6.72k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 6.72k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 6.72k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 6.72k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 6.72k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  6.72k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  3.69k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 3.69k, False: 0]
  |  Branch (15004:23): [True: 3.69k, False: 0]
  ------------------
15005|  3.69k|        {
15006|  3.69k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 3.69k]
  |  Branch (15006:59): [True: 0, False: 3.69k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  3.69k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 3.69k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  3.69k|            else
15016|  3.69k|            {
15017|  3.69k|                get();
15018|  3.69k|            }
15019|       |
15020|  3.69k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  3.69k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 91, False: 3.60k]
  |  |  ------------------
  ------------------
15021|     91|            {
15022|     91|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|     91|            }
15024|  3.69k|        }
15025|       |
15026|  3.60k|        return result;
15027|  3.69k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|  2.50k|    {
19059|  2.50k|        return sax->parse_error(chars_read, "<end of file>",
19060|  2.50k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  2.50k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  2.90k|    {
14005|  2.90k|        errored = true;
14006|  2.90k|        static_cast<void>(ex);
14007|  2.90k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.90k, False: 0]
  ------------------
14008|  2.90k|        {
14009|  2.90k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.90k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.90k|        }
14011|      0|        return false;
14012|  2.90k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  2.90k|    {
19164|  2.90k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  2.90k|        switch (input_format)
19167|  2.90k|        {
19168|  2.90k|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 2.90k, False: 0]
  ------------------
19169|  2.90k|                error_msg += "CBOR";
19170|  2.90k|                break;
19171|       |
19172|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 0, False: 2.90k]
  ------------------
19173|      0|                error_msg += "MessagePack";
19174|      0|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 2.90k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 2.90k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 2.90k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 2.90k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 2.90k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 2.90k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  2.90k|        }
19196|       |
19197|  2.90k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  2.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|   115k|    {
15083|   115k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   230k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 115k]
  |  |  |  Branch (1667:94): [True: 21.0k, False: 94.4k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   115k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   115k|        return true;
15090|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12start_objectEm:
13930|  21.0k|    {
13931|  21.0k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  21.0k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  21.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   115k|    {
14031|   115k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4.35k, False: 111k]
  ------------------
14032|  4.35k|        {
14033|  4.35k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  4.35k|            return &root;
14040|  4.35k|        }
14041|       |
14042|   111k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|   111k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 95.6k, False: 15.4k]
  |  Branch (14042:9): [True: 15.4k, False: 0]
  |  Branch (14042:9): [True: 111k, False: 0]
  ------------------
14043|       |
14044|   111k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 95.6k, False: 15.4k]
  ------------------
14045|  95.6k|        {
14046|  95.6k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  95.6k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  95.6k|        }
14054|       |
14055|  15.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 15.4k, False: 0]
  ------------------
14056|  15.4k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 15.4k, False: 0]
  ------------------
14057|  15.4k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  15.4k|        return object_element;
14064|  15.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_18file_input_adapterEEESH_EEbRT_mPKcPT0_:
13724|   115k|{
13725|   115k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   222k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 218, False: 115k]
  |  |  |  Branch (1667:94): [True: 107k, False: 7.90k]
  |  |  |  Branch (1667:94): [True: 218, False: 107k]
  |  |  ------------------
  ------------------
13726|    218|    {
13727|    218|        return container_too_large_error(sax, len, kind, ref);
13728|    218|    }
13729|   115k|    return true;
13730|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_18file_input_adapterEEESH_EEbRT_mPKcPT0_:
13718|    218|{
13719|    218|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
13720|    218|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11parse_errorINS1_12out_of_rangeEEEbmRKSC_RKT_:
14004|    220|    {
14005|    220|        errored = true;
14006|    220|        static_cast<void>(ex);
14007|    220|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 220, False: 0]
  ------------------
14008|    220|        {
14009|    220|            JSON_THROW(ex);
  ------------------
  |  | 2556|    220|    #define JSON_THROW(exception) throw exception
  ------------------
14010|    220|        }
14011|      0|        return false;
14012|    220|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11start_arrayEm:
13966|  94.4k|    {
13967|  94.4k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  94.4k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  94.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 94.4k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  94.4k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 87.4k, False: 6.96k]
  ------------------
13980|  87.4k|        {
13981|  87.4k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  87.4k|        }
13983|       |
13984|  94.4k|        return true;
13985|  94.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|   115k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  88.0k|    {
15115|  88.0k|        const bool is_object = container_stack.back().is_object;
15116|  88.0k|        container_stack.pop_back();
15117|  88.0k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 13.1k, False: 74.9k]
  ------------------
15118|  88.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE10end_objectEv:
13952|  13.1k|    {
13953|  13.1k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  13.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 13.1k, False: 0]
  ------------------
13954|  13.1k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  13.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 13.1k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  13.1k|        ref_stack.back()->set_parents();
13961|  13.1k|        ref_stack.pop_back();
13962|  13.1k|        return true;
13963|  13.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE9end_arrayEv:
13988|  74.9k|    {
13989|  74.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  74.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 74.9k, False: 0]
  ------------------
13990|  74.9k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  74.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 74.9k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  74.9k|        ref_stack.back()->set_parents();
13997|  74.9k|        ref_stack.pop_back();
13998|  74.9k|        return true;
13999|  74.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|  85.2k|    {
19042|  85.2k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  85.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.25k, False: 82.9k]
  |  |  ------------------
  ------------------
19043|  2.25k|        {
19044|  2.25k|            return report_eof(context);
19045|  2.25k|        }
19046|  82.9k|        return true;
19047|  85.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17check_string_utf8ERSC_PKc:
18941|  40.8k|    {
18942|  40.8k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 40.8k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  40.8k|        {
18944|  40.8k|            return true;
18945|  40.8k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE3keyERSC_:
13942|  27.6k|    {
13943|  27.6k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  27.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 27.6k, False: 0]
  ------------------
13944|  27.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  27.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 27.6k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  27.6k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  27.6k|        return true;
13949|  27.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|  1.16k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.16k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.16k|        chars_read += new_chars_read;
18672|  1.16k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 13, False: 1.15k]
  |  |  ------------------
  ------------------
18673|     13|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     13|            ++chars_read;
18676|     13|            static_cast<void>(report_eof(context));
18677|     13|            return false;
18678|     13|        }
18679|  1.15k|        return true;
18680|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIdEEmPT_m:
 8374|  1.16k|    {
 8375|  1.16k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIdEEvRT_:
18698|  1.15k|    {
18699|  1.15k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.15k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.75k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.60k, False: 1.15k]
  ------------------
18715|  4.60k|            {
18716|  4.60k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.60k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|  1.15k|    {
18826|  1.15k|        const auto result = static_cast<number_float_t>(number);
18827|  1.15k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  2.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.15k]
  |  |  |  Branch (1667:94): [True: 1.14k, False: 8]
  |  |  |  Branch (1667:94): [True: 0, False: 1.14k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.15k|        return sax->number_float(result, "");
18832|  1.15k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    798|    {
19153|    798|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    798|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12number_floatEdRKSC_:
13908|  7.80k|    {
13909|  7.80k|        handle_value(val);
13910|  7.80k|        return true;
13911|  7.80k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  7.80k|    {
14031|  7.80k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 454, False: 7.34k]
  ------------------
14032|    454|        {
14033|    454|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    454|            return &root;
14040|    454|        }
14041|       |
14042|  7.34k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  7.34k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 7.05k, False: 294]
  |  Branch (14042:9): [True: 294, False: 0]
  |  Branch (14042:9): [True: 7.34k, False: 0]
  ------------------
14043|       |
14044|  7.34k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 7.05k, False: 294]
  ------------------
14045|  7.05k|        {
14046|  7.05k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  7.05k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  7.05k|        }
14054|       |
14055|    294|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    294|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 294, False: 0]
  ------------------
14056|    294|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    294|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 294, False: 0]
  ------------------
14057|    294|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    294|        return object_element;
14064|    294|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIcEEmPT_m:
 8374|  14.9k|    {
 8375|  14.9k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  14.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6stringERSC_:
13914|  13.2k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  13.2k|        handle_value(std::move(val));
13918|  13.2k|        return true;
13919|  13.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueISC_EEPSG_OT_:
14030|  13.2k|    {
14031|  13.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 395, False: 12.8k]
  ------------------
14032|    395|        {
14033|    395|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    395|            return &root;
14040|    395|        }
14041|       |
14042|  12.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 9.55k, False: 3.31k]
  |  Branch (14042:9): [True: 3.31k, False: 0]
  |  Branch (14042:9): [True: 12.8k, False: 0]
  ------------------
14043|       |
14044|  12.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 9.55k, False: 3.31k]
  ------------------
14045|  9.55k|        {
14046|  9.55k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  9.55k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  9.55k|        }
14054|       |
14055|  3.31k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.31k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.31k, False: 0]
  ------------------
14056|  3.31k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.31k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.31k, False: 0]
  ------------------
14057|  3.31k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.31k|        return object_element;
14064|  3.31k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIhEEmPT_m:
 8374|  9.59k|    {
 8375|  9.59k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  9.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  25.8k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  25.8k|        handle_value(std::move(val));
13926|  25.8k|        return true;
13927|  25.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
14030|  25.8k|    {
14031|  25.8k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 100, False: 25.7k]
  ------------------
14032|    100|        {
14033|    100|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    100|            return &root;
14040|    100|        }
14041|       |
14042|  25.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  25.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 23.9k, False: 1.82k]
  |  Branch (14042:9): [True: 1.82k, False: 0]
  |  Branch (14042:9): [True: 25.7k, False: 0]
  ------------------
14043|       |
14044|  25.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 23.9k, False: 1.82k]
  ------------------
14045|  23.9k|        {
14046|  23.9k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  23.9k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  23.9k|        }
14054|       |
14055|  1.82k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.82k, False: 0]
  ------------------
14056|  1.82k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.82k, False: 0]
  ------------------
14057|  1.82k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.82k|        return object_element;
14064|  1.82k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIhLb0EEEbRT_:
18739|  4.12k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.12k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.12k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.12k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.08k, False: 34]
  |  Branch (18746:34): [Folded, False: 4.08k]
  |  Branch (18746:57): [True: 0, False: 4.08k]
  ------------------
18747|  4.08k|        {
18748|  4.08k|            byte_swap(result);
18749|  4.08k|        }
18750|  4.12k|        return true;
18751|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIhEEbRT_PKc:
18667|  4.12k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.12k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.12k|        chars_read += new_chars_read;
18672|  4.12k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 34, False: 4.08k]
  |  |  ------------------
  ------------------
18673|     34|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     34|            ++chars_read;
18676|     34|            static_cast<void>(report_eof(context));
18677|     34|            return false;
18678|     34|        }
18679|  4.08k|        return true;
18680|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIhEEvRT_:
18698|  4.08k|    {
18699|  4.08k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.08k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.08k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 4.08k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.08k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE7booleanEb:
13890|  3.82k|    {
13891|  3.82k|        handle_value(val);
13892|  3.82k|        return true;
13893|  3.82k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  3.82k|    {
14031|  3.82k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4, False: 3.82k]
  ------------------
14032|      4|        {
14033|      4|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      4|            return &root;
14040|      4|        }
14041|       |
14042|  3.82k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.82k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 3.22k, False: 597]
  |  Branch (14042:9): [True: 597, False: 0]
  |  Branch (14042:9): [True: 3.82k, False: 0]
  ------------------
14043|       |
14044|  3.82k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 3.22k, False: 597]
  ------------------
14045|  3.22k|        {
14046|  3.22k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  3.22k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  3.22k|        }
14054|       |
14055|    597|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    597|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 597, False: 0]
  ------------------
14056|    597|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    597|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 597, False: 0]
  ------------------
14057|    597|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    597|        return object_element;
14064|    597|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE4nullEv:
13884|  2.71k|    {
13885|  2.71k|        handle_value(nullptr);
13886|  2.71k|        return true;
13887|  2.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  2.71k|    {
14031|  2.71k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 2.70k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  2.70k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.70k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.37k, False: 330]
  |  Branch (14042:9): [True: 330, False: 0]
  |  Branch (14042:9): [True: 2.70k, False: 0]
  ------------------
14043|       |
14044|  2.70k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.37k, False: 330]
  ------------------
14045|  2.37k|        {
14046|  2.37k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.37k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.37k|        }
14054|       |
14055|    330|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    330|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 330, False: 0]
  ------------------
14056|    330|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    330|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 330, False: 0]
  ------------------
14057|    330|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    330|        return object_element;
14064|    330|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE14number_integerEl:
13896|  16.7k|    {
13897|  16.7k|        handle_value(val);
13898|  16.7k|        return true;
13899|  16.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  16.7k|    {
14031|  16.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 330, False: 16.3k]
  ------------------
14032|    330|        {
14033|    330|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    330|            return &root;
14040|    330|        }
14041|       |
14042|  16.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  16.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 12.8k, False: 3.57k]
  |  Branch (14042:9): [True: 3.57k, False: 0]
  |  Branch (14042:9): [True: 16.3k, False: 0]
  ------------------
14043|       |
14044|  16.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 12.8k, False: 3.57k]
  ------------------
14045|  12.8k|        {
14046|  12.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  12.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  12.8k|        }
14054|       |
14055|  3.57k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.57k, False: 0]
  ------------------
14056|  3.57k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.57k, False: 0]
  ------------------
14057|  3.57k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.57k|        return object_element;
14064|  3.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE15number_unsignedEm:
13902|  23.0k|    {
13903|  23.0k|        handle_value(val);
13904|  23.0k|        return true;
13905|  23.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  23.0k|    {
14031|  23.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 282, False: 22.7k]
  ------------------
14032|    282|        {
14033|    282|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    282|            return &root;
14040|    282|        }
14041|       |
14042|  22.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  22.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 20.8k, False: 1.90k]
  |  Branch (14042:9): [True: 1.90k, False: 0]
  |  Branch (14042:9): [True: 22.7k, False: 0]
  ------------------
14043|       |
14044|  22.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 20.8k, False: 1.90k]
  ------------------
14045|  20.8k|        {
14046|  20.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  20.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  20.8k|        }
14054|       |
14055|  1.90k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.90k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.90k, False: 0]
  ------------------
14056|  1.90k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.90k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.90k, False: 0]
  ------------------
14057|  1.90k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.90k|        return object_element;
14064|  1.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIeEEbT_:
18825|    164|    {
18826|    164|        const auto result = static_cast<number_float_t>(number);
18827|    164|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|    328|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 164]
  |  |  |  Branch (1667:94): [True: 164, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 164]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    164|        return sax->number_float(result, "");
18832|    164|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toImEEbRT_PKc:
18667|  2.89k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  2.89k|        auto new_chars_read = ia.get_elements(&dest);
18671|  2.89k|        chars_read += new_chars_read;
18672|  2.89k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  2.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 80, False: 2.81k]
  |  |  ------------------
  ------------------
18673|     80|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     80|            ++chars_read;
18676|     80|            static_cast<void>(report_eof(context));
18677|     80|            return false;
18678|     80|        }
18679|  2.81k|        return true;
18680|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsImEEmPT_m:
 8374|  2.89k|    {
 8375|  2.89k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapImEEvRT_:
18698|  2.81k|    {
18699|  2.81k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  2.81k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  14.0k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 11.2k, False: 2.81k]
  ------------------
18715|  11.2k|            {
18716|  11.2k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  11.2k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  2.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|    644|    {
18800|    644|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    644|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 644, False: 0]
  |  |  ------------------
  ------------------
18801|    644|        {
18802|    644|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    644|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    644|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_cbor_internalENS1_18cbor_tag_handler_tE:
16340|  6.72k|    {
16341|       |        // whether the next value starts at a fresh byte or at the one already
16342|       |        // read into `current`
16343|  6.72k|        bool fetch = true;
16344|       |
16345|       |        // the key currently being read; hoisted out of the loop so that its
16346|       |        // capacity is reused across elements and across nesting levels
16347|  6.72k|        string_t key;
16348|       |
16349|   302k|        while (true)
  ------------------
  |  Branch (16349:16): [True: 299k, Folded]
  ------------------
16350|   299k|        {
16351|   299k|            if (!container_stack.empty())
  ------------------
  |  Branch (16351:17): [True: 292k, False: 6.72k]
  ------------------
16352|   292k|            {
16353|       |                // a copy, not a reference: it must stay valid across the
16354|       |                // pop_back() below, which destroys the container_stack element
16355|       |                // it would otherwise alias
16356|   292k|                const container_frame top = container_stack.back();
16357|   292k|                bool at_end = false;
16358|       |
16359|   292k|                if (top.remaining != npos)
  ------------------
  |  Branch (16359:21): [True: 196k, False: 96.2k]
  ------------------
16360|   196k|                {
16361|       |                    // definite length: the container ends once its elements
16362|       |                    // have been read
16363|   196k|                    at_end = (top.remaining == 0);
16364|   196k|                    if (!at_end)
  ------------------
  |  Branch (16364:25): [True: 110k, False: 85.9k]
  ------------------
16365|   110k|                    {
16366|       |                        // claim the element about to be read
16367|   110k|                        --container_stack.back().remaining;
16368|   110k|                        if (top.is_object)
  ------------------
  |  Branch (16368:29): [True: 19.8k, False: 90.6k]
  ------------------
16369|  19.8k|                        {
16370|  19.8k|                            get();
16371|  19.8k|                        }
16372|   110k|                    }
16373|   196k|                    fetch = true;
16374|   196k|                }
16375|  96.2k|                else
16376|  96.2k|                {
16377|       |                    // indefinite length: the container ends at a break marker.
16378|       |                    // Testing for it consumes a byte, which is the first byte
16379|       |                    // of the next element when it is not one.
16380|  96.2k|                    at_end = (get() == 0xFF);
16381|  96.2k|                    fetch = top.is_object;
16382|  96.2k|                }
16383|       |
16384|   292k|                if (at_end)
  ------------------
  |  Branch (16384:21): [True: 88.0k, False: 204k]
  ------------------
16385|  88.0k|                {
16386|  88.0k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  88.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 88.0k]
  |  |  ------------------
  ------------------
16387|      0|                    {
16388|      0|                        return false;
16389|      0|                    }
16390|       |                    // the value begun here is complete once its container is
16391|  88.0k|                    if (container_stack.empty())
  ------------------
  |  Branch (16391:25): [True: 2.12k, False: 85.9k]
  ------------------
16392|  2.12k|                    {
16393|  2.12k|                        return true;
16394|  2.12k|                    }
16395|  85.9k|                    continue;
16396|  88.0k|                }
16397|       |
16398|   204k|                if (top.is_object)
  ------------------
  |  Branch (16398:21): [True: 28.0k, False: 176k]
  ------------------
16399|  28.0k|                {
16400|  28.0k|                    key.clear();
16401|  28.0k|                    if (JSON_HEDLEY_UNLIKELY(!get_cbor_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  55.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 28.0k]
  |  |  |  Branch (1667:94): [True: 432, False: 27.6k]
  |  |  |  Branch (1667:94): [True: 0, False: 27.6k]
  |  |  ------------------
  ------------------
16402|      0|                    {
16403|      0|                        return false;
16404|      0|                    }
16405|  28.0k|                    fetch = true;
16406|  28.0k|                }
16407|   204k|            }
16408|       |
16409|       |            // a tag is not a value of its own: read on until the tagged value
16410|   211k|            bool tag_pending = false;
16411|   211k|            bool item_read = false;
16412|   211k|            do
16413|   211k|            {
16414|   211k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1667|   211k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 211k]
  |  |  ------------------
  ------------------
16415|      0|                {
16416|      0|                    return false;
16417|      0|                }
16418|   211k|                fetch = !item_read;
16419|   211k|            }
16420|   211k|            while (tag_pending);
  ------------------
  |  Branch (16420:20): [True: 0, False: 211k]
  ------------------
16421|       |
16422|       |            // a value that opened a container left it on the stack; one that
16423|       |            // did not, and that was not inside a container, was the whole value
16424|   211k|            if (container_stack.empty())
  ------------------
  |  Branch (16424:17): [True: 1.56k, False: 209k]
  ------------------
16425|  1.56k|            {
16426|  1.56k|                return true;
16427|  1.56k|            }
16428|   211k|        }
16429|  6.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE19get_cbor_object_keyERSC_:
16039|  28.0k|    {
16040|       |        // EOF and major type 3 (text string) are left to get_cbor_string
16041|  28.0k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (16041:13): [True: 283, False: 27.7k]
  |  Branch (16041:57): [True: 27.6k, False: 127]
  ------------------
16042|  27.9k|        {
16043|  27.9k|            return get_cbor_string(result, "key");
16044|  27.9k|        }
16045|       |
16046|    127|        const char* found = nullptr;
16047|    127|        switch (static_cast<unsigned int>(current) >> 5u)
16048|    127|        {
16049|     35|            case 0:
  ------------------
  |  Branch (16049:13): [True: 35, False: 92]
  ------------------
16050|     35|                found = "an unsigned integer";
16051|     35|                break;
16052|     17|            case 1:
  ------------------
  |  Branch (16052:13): [True: 17, False: 110]
  ------------------
16053|     17|                found = "a negative integer";
16054|     17|                break;
16055|     11|            case 2:
  ------------------
  |  Branch (16055:13): [True: 11, False: 116]
  ------------------
16056|     11|                found = "a byte string";
16057|     11|                break;
16058|     11|            case 4:
  ------------------
  |  Branch (16058:13): [True: 11, False: 116]
  ------------------
16059|     11|                found = "an array";
16060|     11|                break;
16061|     25|            case 5:
  ------------------
  |  Branch (16061:13): [True: 25, False: 102]
  ------------------
16062|     25|                found = "a map";
16063|     25|                break;
16064|      5|            case 6:
  ------------------
  |  Branch (16064:13): [True: 5, False: 122]
  ------------------
16065|      5|                found = "a tag";
16066|      5|                break;
16067|     23|            default: // major type 7
  ------------------
  |  Branch (16067:13): [True: 23, False: 104]
  ------------------
16068|     23|                switch (current)
16069|     23|                {
16070|      1|                    case 0xF4:
  ------------------
  |  Branch (16070:21): [True: 1, False: 22]
  ------------------
16071|      1|                    case 0xF5:
  ------------------
  |  Branch (16071:21): [True: 0, False: 23]
  ------------------
16072|      1|                        found = "a boolean";
16073|      1|                        break;
16074|      0|                    case 0xF6:
  ------------------
  |  Branch (16074:21): [True: 0, False: 23]
  ------------------
16075|      0|                        found = "null";
16076|      0|                        break;
16077|      1|                    case 0xF7:
  ------------------
  |  Branch (16077:21): [True: 1, False: 22]
  ------------------
16078|      1|                        found = "undefined";
16079|      1|                        break;
16080|      1|                    case 0xF9:
  ------------------
  |  Branch (16080:21): [True: 1, False: 22]
  ------------------
16081|      1|                    case 0xFA:
  ------------------
  |  Branch (16081:21): [True: 0, False: 23]
  ------------------
16082|      1|                    case 0xFB:
  ------------------
  |  Branch (16082:21): [True: 0, False: 23]
  ------------------
16083|      1|                        found = "a floating-point number";
16084|      1|                        break;
16085|      5|                    case 0xFF:
  ------------------
  |  Branch (16085:21): [True: 5, False: 18]
  ------------------
16086|      5|                        found = "a break stop code";
16087|      5|                        break;
16088|     15|                    default:
  ------------------
  |  Branch (16088:21): [True: 15, False: 8]
  ------------------
16089|     15|                        found = "a simple value";
16090|     15|                        break;
16091|     23|                }
16092|     23|                break;
16093|    127|        }
16094|       |
16095|    127|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16096|    127|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_cbor_stringERSC_PKc:
15982|  41.7k|    {
15983|       |        // read chunks iteratively, but reject a second indefinite-length
15984|       |        // level as required by RFC 8949, Section 3.2.3
15985|  41.7k|        bool indefinite = false;
15986|       |
15987|  44.0k|        while (true)
  ------------------
  |  Branch (15987:16): [True: 43.2k, Folded]
  ------------------
15988|  43.2k|        {
15989|  43.2k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|  43.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 43.2k]
  |  |  ------------------
  ------------------
15990|      0|            {
15991|      0|                return false;
15992|      0|            }
15993|       |
15994|  43.2k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15994:17): [True: 550, False: 42.6k]
  ------------------
15995|    550|            {
15996|    550|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|    550|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3, False: 547]
  |  |  ------------------
  ------------------
15997|      3|                {
15998|      3|                    return cbor_indefinite_string_error("string", "string");
15999|      3|                }
16000|    547|                indefinite = true;
16001|    547|                get();
16002|    547|                continue;
16003|    550|            }
16004|       |
16005|       |            // a break marker closes the indefinite-length string; outside
16006|       |            // of one it falls through to the error below
16007|  42.6k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16007:17): [True: 1.50k, False: 41.1k]
  |  Branch (16007:31): [True: 467, False: 1.03k]
  ------------------
16008|    467|            {
16009|    467|                return check_string_utf8(result, context);
16010|    467|            }
16011|       |
16012|  42.2k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, indefinite)))
  ------------------
  |  | 1667|  42.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 42.2k]
  |  |  ------------------
  ------------------
16013|      0|            {
16014|      0|                return false;
16015|      0|            }
16016|       |
16017|  42.2k|            if (!indefinite)
  ------------------
  |  Branch (16017:17): [True: 40.4k, False: 1.80k]
  ------------------
16018|  40.4k|            {
16019|  40.4k|                return check_string_utf8(result, context);
16020|  40.4k|            }
16021|       |
16022|  1.80k|            get();
16023|  1.80k|        }
16024|  41.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE28cbor_indefinite_string_errorEPKcSM_:
15887|      6|    {
15888|      6|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
15889|      6|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE21get_cbor_string_chunkERSC_b:
15907|  41.9k|    {
15908|  41.9k|        switch (current)
15909|  41.9k|        {
15910|       |            // UTF-8 string (0x00..0x17 bytes follow)
15911|  25.6k|            case 0x60:
  ------------------
  |  Branch (15911:13): [True: 25.6k, False: 16.2k]
  ------------------
15912|  34.5k|            case 0x61:
  ------------------
  |  Branch (15912:13): [True: 8.86k, False: 33.0k]
  ------------------
15913|  35.2k|            case 0x62:
  ------------------
  |  Branch (15913:13): [True: 747, False: 41.1k]
  ------------------
15914|  35.5k|            case 0x63:
  ------------------
  |  Branch (15914:13): [True: 279, False: 41.6k]
  ------------------
15915|  35.8k|            case 0x64:
  ------------------
  |  Branch (15915:13): [True: 237, False: 41.6k]
  ------------------
15916|  36.1k|            case 0x65:
  ------------------
  |  Branch (15916:13): [True: 376, False: 41.5k]
  ------------------
15917|  36.4k|            case 0x66:
  ------------------
  |  Branch (15917:13): [True: 266, False: 41.6k]
  ------------------
15918|  36.6k|            case 0x67:
  ------------------
  |  Branch (15918:13): [True: 160, False: 41.7k]
  ------------------
15919|  36.8k|            case 0x68:
  ------------------
  |  Branch (15919:13): [True: 260, False: 41.6k]
  ------------------
15920|  36.9k|            case 0x69:
  ------------------
  |  Branch (15920:13): [True: 114, False: 41.8k]
  ------------------
15921|  37.1k|            case 0x6A:
  ------------------
  |  Branch (15921:13): [True: 163, False: 41.7k]
  ------------------
15922|  37.2k|            case 0x6B:
  ------------------
  |  Branch (15922:13): [True: 151, False: 41.7k]
  ------------------
15923|  37.4k|            case 0x6C:
  ------------------
  |  Branch (15923:13): [True: 206, False: 41.7k]
  ------------------
15924|  37.6k|            case 0x6D:
  ------------------
  |  Branch (15924:13): [True: 122, False: 41.7k]
  ------------------
15925|  37.6k|            case 0x6E:
  ------------------
  |  Branch (15925:13): [True: 72, False: 41.8k]
  ------------------
15926|  37.8k|            case 0x6F:
  ------------------
  |  Branch (15926:13): [True: 109, False: 41.8k]
  ------------------
15927|  37.9k|            case 0x70:
  ------------------
  |  Branch (15927:13): [True: 115, False: 41.7k]
  ------------------
15928|  37.9k|            case 0x71:
  ------------------
  |  Branch (15928:13): [True: 80, False: 41.8k]
  ------------------
15929|  38.0k|            case 0x72:
  ------------------
  |  Branch (15929:13): [True: 96, False: 41.8k]
  ------------------
15930|  38.1k|            case 0x73:
  ------------------
  |  Branch (15930:13): [True: 72, False: 41.8k]
  ------------------
15931|  38.2k|            case 0x74:
  ------------------
  |  Branch (15931:13): [True: 117, False: 41.7k]
  ------------------
15932|  38.3k|            case 0x75:
  ------------------
  |  Branch (15932:13): [True: 70, False: 41.8k]
  ------------------
15933|  38.4k|            case 0x76:
  ------------------
  |  Branch (15933:13): [True: 68, False: 41.8k]
  ------------------
15934|  38.6k|            case 0x77:
  ------------------
  |  Branch (15934:13): [True: 265, False: 41.6k]
  ------------------
15935|  38.6k|            {
15936|  38.6k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
15937|  38.4k|            }
15938|       |
15939|  1.27k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15939:13): [True: 1.27k, False: 40.6k]
  ------------------
15940|  1.27k|            {
15941|  1.27k|                std::uint8_t len{};
15942|  1.27k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15942:24): [True: 1.27k, False: 8]
  |  Branch (15942:43): [True: 1.23k, False: 36]
  ------------------
15943|  38.4k|            }
15944|       |
15945|  1.17k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15945:13): [True: 1.17k, False: 40.7k]
  ------------------
15946|  1.17k|            {
15947|  1.17k|                std::uint16_t len{};
15948|  1.17k|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15948:24): [True: 1.16k, False: 10]
  |  Branch (15948:43): [True: 1.10k, False: 62]
  ------------------
15949|  38.4k|            }
15950|       |
15951|    255|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15951:13): [True: 255, False: 41.6k]
  ------------------
15952|    255|            {
15953|    255|                std::uint32_t len{};
15954|    255|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15954:24): [True: 243, False: 12]
  |  Branch (15954:43): [True: 178, False: 65]
  ------------------
15955|  38.4k|            }
15956|       |
15957|    488|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15957:13): [True: 488, False: 41.4k]
  ------------------
15958|    488|            {
15959|    488|                std::uint64_t len{};
15960|    488|                return get_number(len) && get_string(len, result);
  ------------------
  |  Branch (15960:24): [True: 472, False: 16]
  |  Branch (15960:43): [True: 345, False: 127]
  ------------------
15961|  38.4k|            }
15962|       |
15963|     33|            default:
  ------------------
  |  Branch (15963:13): [True: 33, False: 41.8k]
  ------------------
15964|     33|            {
15965|     33|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (15965:133): [True: 30, False: 3]
  ------------------
15966|  38.4k|            }
15967|  41.9k|        }
15968|  41.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIjEEbT_RSC_:
18910|  38.9k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  38.9k|        return get_bytes(len, "string", result);
18921|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|  38.9k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  38.9k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  51.7k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 13.0k, False: 38.7k]
  ------------------
19003|  13.0k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  13.0k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 13.0k, False: 44]
  ------------------
19007|  13.0k|                                       ? static_cast<std::size_t>(len)
19008|  13.0k|                                       : chunk_size;
19009|  13.0k|            const std::size_t old_size = result.size();
19010|  13.0k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  13.0k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  13.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 13.0k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  13.0k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  13.0k|            chars_read += bytes_read;
19018|  13.0k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  13.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 225, False: 12.8k]
  |  |  ------------------
  ------------------
19019|    225|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    225|                result.resize(old_size + bytes_read);
19024|    225|                ++chars_read;
19025|    225|                current = char_traits<char_type>::eof();
19026|    225|                return unexpect_eof(context);
19027|    225|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  12.8k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  12.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 12.8k, False: 0]
  ------------------
19030|  12.8k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  12.8k|        }
19032|  38.7k|        return true;
19033|  38.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIhEEbT_RSC_:
18910|  1.27k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.27k|        return get_bytes(len, "string", result);
18921|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  1.27k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.27k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  2.24k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.00k, False: 1.23k]
  ------------------
19003|  1.00k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.00k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.00k, False: 0]
  ------------------
19007|  1.00k|                                       ? static_cast<std::size_t>(len)
19008|  1.00k|                                       : chunk_size;
19009|  1.00k|            const std::size_t old_size = result.size();
19010|  1.00k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.00k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.00k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.00k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.00k|            chars_read += bytes_read;
19018|  1.00k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 36, False: 970]
  |  |  ------------------
  ------------------
19019|     36|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     36|                result.resize(old_size + bytes_read);
19024|     36|                ++chars_read;
19025|     36|                current = char_traits<char_type>::eof();
19026|     36|                return unexpect_eof(context);
19027|     36|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    970|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    970|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 970, False: 0]
  ------------------
19030|    970|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    970|        }
19032|  1.23k|        return true;
19033|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberItLb0EEEbRT_:
18739|  3.70k|    {
18740|       |        // read in the original format
18741|       |
18742|  3.70k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  3.70k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.70k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  3.70k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.66k, False: 48]
  |  Branch (18746:34): [Folded, False: 3.66k]
  |  Branch (18746:57): [True: 0, False: 3.66k]
  ------------------
18747|  3.66k|        {
18748|  3.66k|            byte_swap(result);
18749|  3.66k|        }
18750|  3.70k|        return true;
18751|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toItEEbRT_PKc:
18667|  3.70k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  3.70k|        auto new_chars_read = ia.get_elements(&dest);
18671|  3.70k|        chars_read += new_chars_read;
18672|  3.70k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  3.70k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 48, False: 3.66k]
  |  |  ------------------
  ------------------
18673|     48|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     48|            ++chars_read;
18676|     48|            static_cast<void>(report_eof(context));
18677|     48|            return false;
18678|     48|        }
18679|  3.66k|        return true;
18680|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsItEEmPT_m:
 8374|  3.70k|    {
 8375|  3.70k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  3.70k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapItEEvRT_:
18698|  3.66k|    {
18699|  3.66k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.66k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  7.32k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.66k, False: 3.66k]
  ------------------
18715|  3.66k|            {
18716|  3.66k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.66k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.66k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringItEEbT_RSC_:
18910|  1.16k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.16k|        return get_bytes(len, "string", result);
18921|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|  1.16k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.16k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.69k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 594, False: 1.10k]
  ------------------
19003|    594|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    594|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 574, False: 20]
  ------------------
19007|    594|                                       ? static_cast<std::size_t>(len)
19008|    594|                                       : chunk_size;
19009|    594|            const std::size_t old_size = result.size();
19010|    594|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    594|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    594|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 594, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    594|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    594|            chars_read += bytes_read;
19018|    594|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    594|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 62, False: 532]
  |  |  ------------------
  ------------------
19019|     62|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     62|                result.resize(old_size + bytes_read);
19024|     62|                ++chars_read;
19025|     62|                current = char_traits<char_type>::eof();
19026|     62|                return unexpect_eof(context);
19027|     62|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    532|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    532|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 532, False: 0]
  ------------------
19030|    532|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    532|        }
19032|  1.10k|        return true;
19033|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIjLb0EEEbRT_:
18739|  1.73k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.73k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.73k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.73k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.66k, False: 63]
  |  Branch (18746:34): [Folded, False: 1.66k]
  |  Branch (18746:57): [True: 0, False: 1.66k]
  ------------------
18747|  1.66k|        {
18748|  1.66k|            byte_swap(result);
18749|  1.66k|        }
18750|  1.73k|        return true;
18751|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIjEEbRT_PKc:
18667|  1.73k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.73k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.73k|        chars_read += new_chars_read;
18672|  1.73k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 63, False: 1.66k]
  |  |  ------------------
  ------------------
18673|     63|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     63|            ++chars_read;
18676|     63|            static_cast<void>(report_eof(context));
18677|     63|            return false;
18678|     63|        }
18679|  1.66k|        return true;
18680|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIjEEmPT_m:
 8374|  1.73k|    {
 8375|  1.73k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.73k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIjEEvRT_:
18698|  1.66k|    {
18699|  1.66k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.66k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.00k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.33k, False: 1.66k]
  ------------------
18715|  3.33k|            {
18716|  3.33k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.33k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.66k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberImLb0EEEbRT_:
18739|  2.89k|    {
18740|       |        // read in the original format
18741|       |
18742|  2.89k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  2.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 2.89k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  2.89k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 2.81k, False: 80]
  |  Branch (18746:34): [Folded, False: 2.81k]
  |  Branch (18746:57): [True: 0, False: 2.81k]
  ------------------
18747|  2.81k|        {
18748|  2.81k|            byte_swap(result);
18749|  2.81k|        }
18750|  2.89k|        return true;
18751|  2.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringImEEbT_RSC_:
18910|    472|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    472|        return get_bytes(len, "string", result);
18921|    472|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesImSC_EEbT_PKcRT0_:
18998|    472|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    472|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    619|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 274, False: 345]
  ------------------
19003|    274|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    274|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 166, False: 108]
  ------------------
19007|    274|                                       ? static_cast<std::size_t>(len)
19008|    274|                                       : chunk_size;
19009|    274|            const std::size_t old_size = result.size();
19010|    274|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    274|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    274|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 274, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    274|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    274|            chars_read += bytes_read;
19018|    274|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    274|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 127, False: 147]
  |  |  ------------------
  ------------------
19019|    127|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    127|                result.resize(old_size + bytes_read);
19024|    127|                ++chars_read;
19025|    127|                current = char_traits<char_type>::eof();
19026|    127|                return unexpect_eof(context);
19027|    127|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    147|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    147|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 147, False: 0]
  ------------------
19030|    147|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    147|        }
19032|    345|        return true;
19033|    472|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE16parse_cbor_valueEbNS1_18cbor_tag_handler_tERbSM_:
15503|   211k|    {
15504|   211k|        tag_pending = false;
15505|   211k|        item_read = false;
15506|       |
15507|   211k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (15507:17): [True: 125k, False: 85.9k]
  ------------------
15508|   211k|        {
15509|       |            // EOF
15510|  1.03k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (15510:13): [True: 1.03k, False: 209k]
  ------------------
15511|  1.03k|                return unexpect_eof("value");
15512|       |
15513|       |            // Integer 0x00..0x17 (0..23)
15514|  9.29k|            case 0x00:
  ------------------
  |  Branch (15514:13): [True: 9.29k, False: 201k]
  ------------------
15515|  10.3k|            case 0x01:
  ------------------
  |  Branch (15515:13): [True: 1.10k, False: 209k]
  ------------------
15516|  10.9k|            case 0x02:
  ------------------
  |  Branch (15516:13): [True: 557, False: 210k]
  ------------------
15517|  11.3k|            case 0x03:
  ------------------
  |  Branch (15517:13): [True: 413, False: 210k]
  ------------------
15518|  12.0k|            case 0x04:
  ------------------
  |  Branch (15518:13): [True: 686, False: 210k]
  ------------------
15519|  12.6k|            case 0x05:
  ------------------
  |  Branch (15519:13): [True: 604, False: 210k]
  ------------------
15520|  13.4k|            case 0x06:
  ------------------
  |  Branch (15520:13): [True: 752, False: 210k]
  ------------------
15521|  13.7k|            case 0x07:
  ------------------
  |  Branch (15521:13): [True: 329, False: 210k]
  ------------------
15522|  14.6k|            case 0x08:
  ------------------
  |  Branch (15522:13): [True: 920, False: 210k]
  ------------------
15523|  15.1k|            case 0x09:
  ------------------
  |  Branch (15523:13): [True: 508, False: 210k]
  ------------------
15524|  15.6k|            case 0x0A:
  ------------------
  |  Branch (15524:13): [True: 465, False: 210k]
  ------------------
15525|  15.9k|            case 0x0B:
  ------------------
  |  Branch (15525:13): [True: 288, False: 210k]
  ------------------
15526|  16.2k|            case 0x0C:
  ------------------
  |  Branch (15526:13): [True: 329, False: 210k]
  ------------------
15527|  16.6k|            case 0x0D:
  ------------------
  |  Branch (15527:13): [True: 373, False: 210k]
  ------------------
15528|  17.0k|            case 0x0E:
  ------------------
  |  Branch (15528:13): [True: 470, False: 210k]
  ------------------
15529|  17.4k|            case 0x0F:
  ------------------
  |  Branch (15529:13): [True: 393, False: 210k]
  ------------------
15530|  18.0k|            case 0x10:
  ------------------
  |  Branch (15530:13): [True: 591, False: 210k]
  ------------------
15531|  18.6k|            case 0x11:
  ------------------
  |  Branch (15531:13): [True: 599, False: 210k]
  ------------------
15532|  19.0k|            case 0x12:
  ------------------
  |  Branch (15532:13): [True: 358, False: 210k]
  ------------------
15533|  19.3k|            case 0x13:
  ------------------
  |  Branch (15533:13): [True: 298, False: 210k]
  ------------------
15534|  19.8k|            case 0x14:
  ------------------
  |  Branch (15534:13): [True: 534, False: 210k]
  ------------------
15535|  20.1k|            case 0x15:
  ------------------
  |  Branch (15535:13): [True: 260, False: 210k]
  ------------------
15536|  20.5k|            case 0x16:
  ------------------
  |  Branch (15536:13): [True: 471, False: 210k]
  ------------------
15537|  20.9k|            case 0x17:
  ------------------
  |  Branch (15537:13): [True: 360, False: 210k]
  ------------------
15538|  20.9k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
15539|       |
15540|    750|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15540:13): [True: 750, False: 210k]
  ------------------
15541|    750|            {
15542|    750|                std::uint8_t number{};
15543|    750|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15543:24): [True: 748, False: 2]
  |  Branch (15543:46): [True: 748, False: 0]
  ------------------
15544|  20.5k|            }
15545|       |
15546|    371|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (15546:13): [True: 371, False: 210k]
  ------------------
15547|    371|            {
15548|    371|                std::uint16_t number{};
15549|    371|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15549:24): [True: 367, False: 4]
  |  Branch (15549:46): [True: 367, False: 0]
  ------------------
15550|  20.5k|            }
15551|       |
15552|    325|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (15552:13): [True: 325, False: 210k]
  ------------------
15553|    325|            {
15554|    325|                std::uint32_t number{};
15555|    325|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15555:24): [True: 319, False: 6]
  |  Branch (15555:46): [True: 319, False: 0]
  ------------------
15556|  20.5k|            }
15557|       |
15558|    656|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (15558:13): [True: 656, False: 210k]
  ------------------
15559|    656|            {
15560|    656|                std::uint64_t number{};
15561|    656|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (15561:24): [True: 644, False: 12]
  |  Branch (15561:46): [True: 644, False: 0]
  ------------------
15562|  20.5k|            }
15563|       |
15564|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
15565|  1.14k|            case 0x20:
  ------------------
  |  Branch (15565:13): [True: 1.14k, False: 209k]
  ------------------
15566|  1.79k|            case 0x21:
  ------------------
  |  Branch (15566:13): [True: 647, False: 210k]
  ------------------
15567|  2.51k|            case 0x22:
  ------------------
  |  Branch (15567:13): [True: 720, False: 210k]
  ------------------
15568|  3.22k|            case 0x23:
  ------------------
  |  Branch (15568:13): [True: 714, False: 210k]
  ------------------
15569|  3.60k|            case 0x24:
  ------------------
  |  Branch (15569:13): [True: 382, False: 210k]
  ------------------
15570|  4.42k|            case 0x25:
  ------------------
  |  Branch (15570:13): [True: 817, False: 210k]
  ------------------
15571|  4.84k|            case 0x26:
  ------------------
  |  Branch (15571:13): [True: 421, False: 210k]
  ------------------
15572|  5.58k|            case 0x27:
  ------------------
  |  Branch (15572:13): [True: 740, False: 210k]
  ------------------
15573|  6.18k|            case 0x28:
  ------------------
  |  Branch (15573:13): [True: 602, False: 210k]
  ------------------
15574|  6.75k|            case 0x29:
  ------------------
  |  Branch (15574:13): [True: 562, False: 210k]
  ------------------
15575|  7.38k|            case 0x2A:
  ------------------
  |  Branch (15575:13): [True: 635, False: 210k]
  ------------------
15576|  7.99k|            case 0x2B:
  ------------------
  |  Branch (15576:13): [True: 613, False: 210k]
  ------------------
15577|  8.39k|            case 0x2C:
  ------------------
  |  Branch (15577:13): [True: 396, False: 210k]
  ------------------
15578|  9.19k|            case 0x2D:
  ------------------
  |  Branch (15578:13): [True: 805, False: 210k]
  ------------------
15579|  9.62k|            case 0x2E:
  ------------------
  |  Branch (15579:13): [True: 424, False: 210k]
  ------------------
15580|  10.4k|            case 0x2F:
  ------------------
  |  Branch (15580:13): [True: 799, False: 210k]
  ------------------
15581|  11.3k|            case 0x30:
  ------------------
  |  Branch (15581:13): [True: 909, False: 210k]
  ------------------
15582|  11.8k|            case 0x31:
  ------------------
  |  Branch (15582:13): [True: 538, False: 210k]
  ------------------
15583|  12.4k|            case 0x32:
  ------------------
  |  Branch (15583:13): [True: 551, False: 210k]
  ------------------
15584|  12.8k|            case 0x33:
  ------------------
  |  Branch (15584:13): [True: 416, False: 210k]
  ------------------
15585|  13.4k|            case 0x34:
  ------------------
  |  Branch (15585:13): [True: 622, False: 210k]
  ------------------
15586|  13.8k|            case 0x35:
  ------------------
  |  Branch (15586:13): [True: 371, False: 210k]
  ------------------
15587|  14.2k|            case 0x36:
  ------------------
  |  Branch (15587:13): [True: 450, False: 210k]
  ------------------
15588|  14.7k|            case 0x37:
  ------------------
  |  Branch (15588:13): [True: 514, False: 210k]
  ------------------
15589|  14.7k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
15590|       |
15591|    470|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (15591:13): [True: 470, False: 210k]
  ------------------
15592|    470|                return get_cbor_negative_integer<std::uint8_t>();
15593|       |
15594|    486|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (15594:13): [True: 486, False: 210k]
  ------------------
15595|    486|                return get_cbor_negative_integer<std::uint16_t>();
15596|       |
15597|    336|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (15597:13): [True: 336, False: 210k]
  ------------------
15598|    336|                return get_cbor_negative_integer<std::uint32_t>();
15599|       |
15600|    827|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (15600:13): [True: 827, False: 210k]
  ------------------
15601|    827|                return get_cbor_negative_integer<std::uint64_t>();
15602|       |
15603|       |            // Binary data (0x00..0x17 bytes follow)
15604|  19.7k|            case 0x40:
  ------------------
  |  Branch (15604:13): [True: 19.7k, False: 191k]
  ------------------
15605|  21.0k|            case 0x41:
  ------------------
  |  Branch (15605:13): [True: 1.26k, False: 209k]
  ------------------
15606|  21.3k|            case 0x42:
  ------------------
  |  Branch (15606:13): [True: 351, False: 210k]
  ------------------
15607|  21.5k|            case 0x43:
  ------------------
  |  Branch (15607:13): [True: 154, False: 210k]
  ------------------
15608|  21.6k|            case 0x44:
  ------------------
  |  Branch (15608:13): [True: 119, False: 210k]
  ------------------
15609|  21.8k|            case 0x45:
  ------------------
  |  Branch (15609:13): [True: 180, False: 210k]
  ------------------
15610|  21.9k|            case 0x46:
  ------------------
  |  Branch (15610:13): [True: 138, False: 210k]
  ------------------
15611|  22.0k|            case 0x47:
  ------------------
  |  Branch (15611:13): [True: 112, False: 210k]
  ------------------
15612|  22.2k|            case 0x48:
  ------------------
  |  Branch (15612:13): [True: 149, False: 210k]
  ------------------
15613|  22.3k|            case 0x49:
  ------------------
  |  Branch (15613:13): [True: 94, False: 210k]
  ------------------
15614|  22.4k|            case 0x4A:
  ------------------
  |  Branch (15614:13): [True: 104, False: 210k]
  ------------------
15615|  22.5k|            case 0x4B:
  ------------------
  |  Branch (15615:13): [True: 107, False: 210k]
  ------------------
15616|  22.6k|            case 0x4C:
  ------------------
  |  Branch (15616:13): [True: 115, False: 210k]
  ------------------
15617|  22.7k|            case 0x4D:
  ------------------
  |  Branch (15617:13): [True: 77, False: 210k]
  ------------------
15618|  22.8k|            case 0x4E:
  ------------------
  |  Branch (15618:13): [True: 69, False: 210k]
  ------------------
15619|  22.8k|            case 0x4F:
  ------------------
  |  Branch (15619:13): [True: 46, False: 210k]
  ------------------
15620|  22.9k|            case 0x50:
  ------------------
  |  Branch (15620:13): [True: 71, False: 210k]
  ------------------
15621|  22.9k|            case 0x51:
  ------------------
  |  Branch (15621:13): [True: 48, False: 210k]
  ------------------
15622|  23.0k|            case 0x52:
  ------------------
  |  Branch (15622:13): [True: 48, False: 210k]
  ------------------
15623|  23.0k|            case 0x53:
  ------------------
  |  Branch (15623:13): [True: 51, False: 210k]
  ------------------
15624|  23.1k|            case 0x54:
  ------------------
  |  Branch (15624:13): [True: 41, False: 210k]
  ------------------
15625|  23.1k|            case 0x55:
  ------------------
  |  Branch (15625:13): [True: 44, False: 210k]
  ------------------
15626|  23.2k|            case 0x56:
  ------------------
  |  Branch (15626:13): [True: 52, False: 210k]
  ------------------
15627|  23.2k|            case 0x57:
  ------------------
  |  Branch (15627:13): [True: 60, False: 210k]
  ------------------
15628|  24.1k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15628:13): [True: 911, False: 210k]
  ------------------
15629|  24.8k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15629:13): [True: 632, False: 210k]
  ------------------
15630|  25.2k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15630:13): [True: 445, False: 210k]
  ------------------
15631|  25.6k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15631:13): [True: 422, False: 210k]
  ------------------
15632|  26.3k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (15632:13): [True: 717, False: 210k]
  ------------------
15633|  26.3k|            {
15634|  26.3k|                binary_t b;
15635|  26.3k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15635:24): [True: 25.8k, False: 531]
  |  Branch (15635:46): [True: 25.8k, False: 0]
  ------------------
15636|  25.6k|            }
15637|       |
15638|       |            // UTF-8 string (0x00..0x17 bytes follow)
15639|  5.95k|            case 0x60:
  ------------------
  |  Branch (15639:13): [True: 5.95k, False: 205k]
  ------------------
15640|  7.05k|            case 0x61:
  ------------------
  |  Branch (15640:13): [True: 1.10k, False: 209k]
  ------------------
15641|  7.48k|            case 0x62:
  ------------------
  |  Branch (15641:13): [True: 428, False: 210k]
  ------------------
15642|  7.74k|            case 0x63:
  ------------------
  |  Branch (15642:13): [True: 261, False: 210k]
  ------------------
15643|  7.96k|            case 0x64:
  ------------------
  |  Branch (15643:13): [True: 223, False: 210k]
  ------------------
15644|  8.31k|            case 0x65:
  ------------------
  |  Branch (15644:13): [True: 350, False: 210k]
  ------------------
15645|  8.56k|            case 0x66:
  ------------------
  |  Branch (15645:13): [True: 251, False: 210k]
  ------------------
15646|  8.71k|            case 0x67:
  ------------------
  |  Branch (15646:13): [True: 147, False: 210k]
  ------------------
15647|  8.95k|            case 0x68:
  ------------------
  |  Branch (15647:13): [True: 238, False: 210k]
  ------------------
15648|  9.05k|            case 0x69:
  ------------------
  |  Branch (15648:13): [True: 102, False: 210k]
  ------------------
15649|  9.19k|            case 0x6A:
  ------------------
  |  Branch (15649:13): [True: 141, False: 210k]
  ------------------
15650|  9.31k|            case 0x6B:
  ------------------
  |  Branch (15650:13): [True: 119, False: 210k]
  ------------------
15651|  9.51k|            case 0x6C:
  ------------------
  |  Branch (15651:13): [True: 197, False: 210k]
  ------------------
15652|  9.62k|            case 0x6D:
  ------------------
  |  Branch (15652:13): [True: 112, False: 210k]
  ------------------
15653|  9.68k|            case 0x6E:
  ------------------
  |  Branch (15653:13): [True: 59, False: 210k]
  ------------------
15654|  9.76k|            case 0x6F:
  ------------------
  |  Branch (15654:13): [True: 82, False: 210k]
  ------------------
15655|  9.84k|            case 0x70:
  ------------------
  |  Branch (15655:13): [True: 84, False: 210k]
  ------------------
15656|  9.91k|            case 0x71:
  ------------------
  |  Branch (15656:13): [True: 69, False: 210k]
  ------------------
15657|  10.0k|            case 0x72:
  ------------------
  |  Branch (15657:13): [True: 83, False: 210k]
  ------------------
15658|  10.0k|            case 0x73:
  ------------------
  |  Branch (15658:13): [True: 67, False: 210k]
  ------------------
15659|  10.1k|            case 0x74:
  ------------------
  |  Branch (15659:13): [True: 109, False: 210k]
  ------------------
15660|  10.2k|            case 0x75:
  ------------------
  |  Branch (15660:13): [True: 62, False: 210k]
  ------------------
15661|  10.3k|            case 0x76:
  ------------------
  |  Branch (15661:13): [True: 63, False: 210k]
  ------------------
15662|  10.4k|            case 0x77:
  ------------------
  |  Branch (15662:13): [True: 120, False: 210k]
  ------------------
15663|  11.5k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15663:13): [True: 1.13k, False: 209k]
  ------------------
15664|  12.5k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15664:13): [True: 996, False: 210k]
  ------------------
15665|  12.8k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15665:13): [True: 255, False: 210k]
  ------------------
15666|  13.2k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15666:13): [True: 449, False: 210k]
  ------------------
15667|  13.7k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (15667:13): [True: 537, False: 210k]
  ------------------
15668|  13.7k|            {
15669|  13.7k|                string_t s;
15670|  13.7k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (15670:24): [True: 13.2k, False: 526]
  |  Branch (15670:46): [True: 13.2k, False: 0]
  ------------------
15671|  13.2k|            }
15672|       |
15673|       |            // array (0x00..0x17 data items follow)
15674|  2.68k|            case 0x80:
  ------------------
  |  Branch (15674:13): [True: 2.68k, False: 208k]
  ------------------
15675|  78.1k|            case 0x81:
  ------------------
  |  Branch (15675:13): [True: 75.4k, False: 135k]
  ------------------
15676|  78.5k|            case 0x82:
  ------------------
  |  Branch (15676:13): [True: 474, False: 210k]
  ------------------
15677|  79.0k|            case 0x83:
  ------------------
  |  Branch (15677:13): [True: 509, False: 210k]
  ------------------
15678|  79.4k|            case 0x84:
  ------------------
  |  Branch (15678:13): [True: 312, False: 210k]
  ------------------
15679|  79.6k|            case 0x85:
  ------------------
  |  Branch (15679:13): [True: 254, False: 210k]
  ------------------
15680|  79.9k|            case 0x86:
  ------------------
  |  Branch (15680:13): [True: 329, False: 210k]
  ------------------
15681|  80.4k|            case 0x87:
  ------------------
  |  Branch (15681:13): [True: 459, False: 210k]
  ------------------
15682|  80.7k|            case 0x88:
  ------------------
  |  Branch (15682:13): [True: 332, False: 210k]
  ------------------
15683|  81.0k|            case 0x89:
  ------------------
  |  Branch (15683:13): [True: 254, False: 210k]
  ------------------
15684|  81.3k|            case 0x8A:
  ------------------
  |  Branch (15684:13): [True: 356, False: 210k]
  ------------------
15685|  81.6k|            case 0x8B:
  ------------------
  |  Branch (15685:13): [True: 303, False: 210k]
  ------------------
15686|  81.9k|            case 0x8C:
  ------------------
  |  Branch (15686:13): [True: 256, False: 210k]
  ------------------
15687|  82.2k|            case 0x8D:
  ------------------
  |  Branch (15687:13): [True: 319, False: 210k]
  ------------------
15688|  82.6k|            case 0x8E:
  ------------------
  |  Branch (15688:13): [True: 343, False: 210k]
  ------------------
15689|  82.9k|            case 0x8F:
  ------------------
  |  Branch (15689:13): [True: 377, False: 210k]
  ------------------
15690|  83.4k|            case 0x90:
  ------------------
  |  Branch (15690:13): [True: 487, False: 210k]
  ------------------
15691|  83.9k|            case 0x91:
  ------------------
  |  Branch (15691:13): [True: 481, False: 210k]
  ------------------
15692|  84.3k|            case 0x92:
  ------------------
  |  Branch (15692:13): [True: 349, False: 210k]
  ------------------
15693|  84.6k|            case 0x93:
  ------------------
  |  Branch (15693:13): [True: 358, False: 210k]
  ------------------
15694|  84.9k|            case 0x94:
  ------------------
  |  Branch (15694:13): [True: 281, False: 210k]
  ------------------
15695|  85.2k|            case 0x95:
  ------------------
  |  Branch (15695:13): [True: 257, False: 210k]
  ------------------
15696|  85.6k|            case 0x96:
  ------------------
  |  Branch (15696:13): [True: 485, False: 210k]
  ------------------
15697|  86.2k|            case 0x97:
  ------------------
  |  Branch (15697:13): [True: 568, False: 210k]
  ------------------
15698|  86.2k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15699|       |
15700|    313|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15700:13): [True: 313, False: 210k]
  ------------------
15701|    819|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15701:13): [True: 506, False: 210k]
  ------------------
15702|  1.08k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15702:13): [True: 263, False: 210k]
  ------------------
15703|  1.35k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15703:13): [True: 274, False: 210k]
  ------------------
15704|  1.35k|            {
15705|  1.35k|                std::uint64_t len{};
15706|  1.35k|                std::size_t size{};
15707|  1.35k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "array") && enter_array(size);
  ------------------
  |  Branch (15707:24): [True: 1.31k, False: 39]
  |  Branch (15707:50): [True: 1.31k, False: 1]
  |  Branch (15707:97): [True: 1.19k, False: 125]
  ------------------
15708|  1.08k|            }
15709|       |
15710|  6.84k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (15710:13): [True: 6.84k, False: 204k]
  ------------------
15711|  6.84k|                return enter_array(detail::unknown_size());
15712|       |
15713|       |            // map (0x00..0x17 pairs of data items follow)
15714|  2.06k|            case 0xA0:
  ------------------
  |  Branch (15714:13): [True: 2.06k, False: 208k]
  ------------------
15715|  10.6k|            case 0xA1:
  ------------------
  |  Branch (15715:13): [True: 8.61k, False: 202k]
  ------------------
15716|  12.2k|            case 0xA2:
  ------------------
  |  Branch (15716:13): [True: 1.61k, False: 209k]
  ------------------
15717|  12.8k|            case 0xA3:
  ------------------
  |  Branch (15717:13): [True: 511, False: 210k]
  ------------------
15718|  13.0k|            case 0xA4:
  ------------------
  |  Branch (15718:13): [True: 280, False: 210k]
  ------------------
15719|  13.3k|            case 0xA5:
  ------------------
  |  Branch (15719:13): [True: 234, False: 210k]
  ------------------
15720|  13.6k|            case 0xA6:
  ------------------
  |  Branch (15720:13): [True: 379, False: 210k]
  ------------------
15721|  13.9k|            case 0xA7:
  ------------------
  |  Branch (15721:13): [True: 262, False: 210k]
  ------------------
15722|  14.5k|            case 0xA8:
  ------------------
  |  Branch (15722:13): [True: 547, False: 210k]
  ------------------
15723|  14.7k|            case 0xA9:
  ------------------
  |  Branch (15723:13): [True: 252, False: 210k]
  ------------------
15724|  15.0k|            case 0xAA:
  ------------------
  |  Branch (15724:13): [True: 340, False: 210k]
  ------------------
15725|  15.3k|            case 0xAB:
  ------------------
  |  Branch (15725:13): [True: 272, False: 210k]
  ------------------
15726|  15.5k|            case 0xAC:
  ------------------
  |  Branch (15726:13): [True: 209, False: 210k]
  ------------------
15727|  15.8k|            case 0xAD:
  ------------------
  |  Branch (15727:13): [True: 222, False: 210k]
  ------------------
15728|  16.0k|            case 0xAE:
  ------------------
  |  Branch (15728:13): [True: 228, False: 210k]
  ------------------
15729|  16.3k|            case 0xAF:
  ------------------
  |  Branch (15729:13): [True: 362, False: 210k]
  ------------------
15730|  16.6k|            case 0xB0:
  ------------------
  |  Branch (15730:13): [True: 297, False: 210k]
  ------------------
15731|  17.2k|            case 0xB1:
  ------------------
  |  Branch (15731:13): [True: 517, False: 210k]
  ------------------
15732|  17.4k|            case 0xB2:
  ------------------
  |  Branch (15732:13): [True: 236, False: 210k]
  ------------------
15733|  17.6k|            case 0xB3:
  ------------------
  |  Branch (15733:13): [True: 241, False: 210k]
  ------------------
15734|  18.0k|            case 0xB4:
  ------------------
  |  Branch (15734:13): [True: 349, False: 210k]
  ------------------
15735|  18.1k|            case 0xB5:
  ------------------
  |  Branch (15735:13): [True: 110, False: 210k]
  ------------------
15736|  18.4k|            case 0xB6:
  ------------------
  |  Branch (15736:13): [True: 305, False: 210k]
  ------------------
15737|  18.8k|            case 0xB7:
  ------------------
  |  Branch (15737:13): [True: 378, False: 210k]
  ------------------
15738|  18.8k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
15739|       |
15740|    346|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (15740:13): [True: 346, False: 210k]
  ------------------
15741|    828|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (15741:13): [True: 482, False: 210k]
  ------------------
15742|    934|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (15742:13): [True: 106, False: 210k]
  ------------------
15743|  1.16k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (15743:13): [True: 232, False: 210k]
  ------------------
15744|  1.16k|            {
15745|  1.16k|                std::uint64_t len{};
15746|  1.16k|                std::size_t size{};
15747|  1.16k|                return get_cbor_argument(len) && get_cbor_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (15747:24): [True: 1.12k, False: 39]
  |  Branch (15747:50): [True: 1.12k, False: 1]
  |  Branch (15747:95): [True: 1.03k, False: 93]
  ------------------
15748|    934|            }
15749|       |
15750|  1.05k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (15750:13): [True: 1.05k, False: 209k]
  ------------------
15751|  1.05k|                return enter_object(detail::unknown_size());
15752|       |
15753|      2|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (15753:13): [True: 2, False: 211k]
  ------------------
15754|      4|            case 0xC1:
  ------------------
  |  Branch (15754:13): [True: 2, False: 211k]
  ------------------
15755|      5|            case 0xC2:
  ------------------
  |  Branch (15755:13): [True: 1, False: 211k]
  ------------------
15756|      6|            case 0xC3:
  ------------------
  |  Branch (15756:13): [True: 1, False: 211k]
  ------------------
15757|      9|            case 0xC4:
  ------------------
  |  Branch (15757:13): [True: 3, False: 211k]
  ------------------
15758|     10|            case 0xC5:
  ------------------
  |  Branch (15758:13): [True: 1, False: 211k]
  ------------------
15759|     12|            case 0xC6:
  ------------------
  |  Branch (15759:13): [True: 2, False: 211k]
  ------------------
15760|     13|            case 0xC7:
  ------------------
  |  Branch (15760:13): [True: 1, False: 211k]
  ------------------
15761|     14|            case 0xC8:
  ------------------
  |  Branch (15761:13): [True: 1, False: 211k]
  ------------------
15762|     16|            case 0xC9:
  ------------------
  |  Branch (15762:13): [True: 2, False: 211k]
  ------------------
15763|     17|            case 0xCA:
  ------------------
  |  Branch (15763:13): [True: 1, False: 211k]
  ------------------
15764|     19|            case 0xCB:
  ------------------
  |  Branch (15764:13): [True: 2, False: 211k]
  ------------------
15765|     20|            case 0xCC:
  ------------------
  |  Branch (15765:13): [True: 1, False: 211k]
  ------------------
15766|     21|            case 0xCD:
  ------------------
  |  Branch (15766:13): [True: 1, False: 211k]
  ------------------
15767|     22|            case 0xCE:
  ------------------
  |  Branch (15767:13): [True: 1, False: 211k]
  ------------------
15768|     23|            case 0xCF:
  ------------------
  |  Branch (15768:13): [True: 1, False: 211k]
  ------------------
15769|     25|            case 0xD0:
  ------------------
  |  Branch (15769:13): [True: 2, False: 211k]
  ------------------
15770|     26|            case 0xD1:
  ------------------
  |  Branch (15770:13): [True: 1, False: 211k]
  ------------------
15771|     27|            case 0xD2:
  ------------------
  |  Branch (15771:13): [True: 1, False: 211k]
  ------------------
15772|     28|            case 0xD3:
  ------------------
  |  Branch (15772:13): [True: 1, False: 211k]
  ------------------
15773|     31|            case 0xD4:
  ------------------
  |  Branch (15773:13): [True: 3, False: 211k]
  ------------------
15774|     33|            case 0xD5:
  ------------------
  |  Branch (15774:13): [True: 2, False: 211k]
  ------------------
15775|     35|            case 0xD6:
  ------------------
  |  Branch (15775:13): [True: 2, False: 211k]
  ------------------
15776|     37|            case 0xD7:
  ------------------
  |  Branch (15776:13): [True: 2, False: 211k]
  ------------------
15777|     37|            {
15778|     37|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (15778:21): [True: 37, False: 0]
  ------------------
15779|     37|                {
15780|     37|                    return unexpected_byte("invalid byte", "value");
15781|     37|                }
15782|       |
15783|       |                // ignore and store: the tag value is already in the head, so
15784|       |                // there is nothing left to read here; the tagged value that
15785|       |                // follows is read by the loop in parse_cbor_internal() rather
15786|       |                // than by recursing here
15787|      0|                tag_pending = true;
15788|      0|                return true;
15789|     37|            }
15790|       |
15791|      2|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (15791:13): [True: 2, False: 211k]
  ------------------
15792|      3|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (15792:13): [True: 1, False: 211k]
  ------------------
15793|      4|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (15793:13): [True: 1, False: 211k]
  ------------------
15794|      5|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (15794:13): [True: 1, False: 211k]
  ------------------
15795|      5|            {
15796|      5|                switch (tag_handler)
15797|      5|                {
15798|      5|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (15798:21): [True: 5, False: 0]
  ------------------
15799|      5|                    {
15800|      5|                        return unexpected_byte("invalid byte", "value");
15801|      0|                    }
15802|       |
15803|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (15803:21): [True: 0, False: 5]
  ------------------
15804|      0|                    {
15805|       |                        // ignore the tag's binary subtype argument
15806|      0|                        std::uint64_t subtype_to_ignore{};
15807|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (15807:29): [True: 0, False: 0]
  ------------------
15808|      0|                        {
15809|      0|                            return false;
15810|      0|                        }
15811|       |                        // the tagged value follows; it is read by the loop in
15812|       |                        // parse_cbor_internal() rather than by recursing here
15813|      0|                        tag_pending = true;
15814|      0|                        return true;
15815|      0|                    }
15816|       |
15817|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (15817:21): [True: 0, False: 5]
  ------------------
15818|      0|                    {
15819|       |                        // use binary subtype and store in a binary container
15820|      0|                        std::uint64_t subtype{};
15821|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (15821:29): [True: 0, False: 0]
  ------------------
15822|      0|                        {
15823|      0|                            return false;
15824|      0|                        }
15825|      0|                        binary_t b;
15826|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
15827|       |
15828|      0|                        get();
15829|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
15830|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (15830:30): [True: 0, False: 0]
  |  Branch (15830:49): [True: 0, False: 0]
  |  Branch (15830:69): [True: 0, False: 0]
  ------------------
15831|      0|                        {
15832|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (15832:36): [True: 0, False: 0]
  |  Branch (15832:58): [True: 0, False: 0]
  ------------------
15833|      0|                        }
15834|       |
15835|       |                        // not a byte string: the tagged value, whose first byte
15836|       |                        // was just read, is read by the caller like for ignore
15837|      0|                        tag_pending = true;
15838|      0|                        item_read = true;
15839|      0|                        return true;
15840|      0|                    }
15841|       |
15842|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (15842:21): [True: 0, False: 5]
  ------------------
15843|      0|                        JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15843:25): [Folded, False: 0]
  ------------------
15844|      0|                        return false;        // LCOV_EXCL_LINE
15845|      5|                }
15846|      5|            }
15847|       |
15848|  2.02k|            case 0xF4: // false
  ------------------
  |  Branch (15848:13): [True: 2.02k, False: 208k]
  ------------------
15849|  2.02k|                return sax->boolean(false);
15850|       |
15851|  1.80k|            case 0xF5: // true
  ------------------
  |  Branch (15851:13): [True: 1.80k, False: 209k]
  ------------------
15852|  1.80k|                return sax->boolean(true);
15853|       |
15854|  2.71k|            case 0xF6: // null
  ------------------
  |  Branch (15854:13): [True: 2.71k, False: 208k]
  ------------------
15855|  2.71k|                return sax->null();
15856|       |
15857|  5.85k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (15857:13): [True: 5.85k, False: 205k]
  ------------------
15858|  5.85k|                return get_half_float(false);
15859|       |
15860|    662|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (15860:13): [True: 662, False: 210k]
  ------------------
15861|    662|            {
15862|    662|                float number{};
15863|    662|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15863:24): [True: 651, False: 11]
  |  Branch (15863:46): [True: 651, False: 0]
  ------------------
15864|      5|            }
15865|       |
15866|  1.16k|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (15866:13): [True: 1.16k, False: 209k]
  ------------------
15867|  1.16k|            {
15868|  1.16k|                double number{};
15869|  1.16k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (15869:24): [True: 1.15k, False: 13]
  |  Branch (15869:46): [True: 1.15k, False: 0]
  ------------------
15870|      5|            }
15871|       |
15872|     68|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (15872:13): [True: 68, False: 210k]
  ------------------
15873|     68|            {
15874|     68|                return unexpected_byte("invalid byte", "value");
15875|      5|            }
15876|   211k|        }
15877|   211k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIhEEbT_:
18799|    748|    {
18800|    748|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    748|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 748, False: 0]
  |  |  ------------------
  ------------------
18801|    748|        {
18802|    748|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    748|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    748|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedItEEbT_:
18799|    367|    {
18800|    367|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    367|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 367, False: 0]
  |  |  ------------------
  ------------------
18801|    367|        {
18802|    367|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    367|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    367|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIjEEbT_:
18799|    319|    {
18800|    319|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    319|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 319, False: 0]
  |  |  ------------------
  ------------------
18801|    319|        {
18802|    319|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    319|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    319|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerIhEEbv:
15467|    470|    {
15468|    470|        NumberType number{};
15469|    470|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    470|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 470]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    470|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    470|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 466, False: 4]
  |  |  ------------------
  ------------------
15478|    466|        {
15479|    466|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    466|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      4|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    470|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerItEEbv:
15467|    486|    {
15468|    486|        NumberType number{};
15469|    486|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    486|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 486]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    486|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    486|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 480, False: 6]
  |  |  ------------------
  ------------------
15478|    480|        {
15479|    480|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    480|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      6|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    486|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerIjEEbv:
15467|    336|    {
15468|    336|        NumberType number{};
15469|    336|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    336|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 336]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    336|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    336|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 328, False: 8]
  |  |  ------------------
  ------------------
15478|    328|        {
15479|    328|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    328|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|      8|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    336|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE25get_cbor_negative_integerImEEbv:
15467|    827|    {
15468|    827|        NumberType number{};
15469|    827|        if (JSON_HEDLEY_UNLIKELY(!get_number(number)))
  ------------------
  |  | 1667|    827|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 827]
  |  |  ------------------
  ------------------
15470|      0|        {
15471|      0|            return false;
15472|      0|        }
15473|       |
15474|       |        // the value is -1 - number, which fits into number_integer_t
15475|       |        // whenever number does; the outer cast undoes the integral promotion
15476|       |        // for number_integer_t types narrower than int
15477|    827|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    827|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 648, False: 179]
  |  |  ------------------
  ------------------
15478|    648|        {
15479|    648|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
15480|    648|        }
15481|       |
15482|       |        // like the lexer does for JSON text, store a value too small for
15483|       |        // number_integer_t as number_float_t; compute it as long double so
15484|       |        // that emit_float sees a finite value and can detect an overflow of
15485|       |        // number_float_t
15486|    179|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
15487|    827|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15get_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
16193|  26.3k|    {
16194|       |        // read chunks iteratively, but reject a second indefinite-length
16195|       |        // level as required by RFC 8949, Section 3.2.3
16196|  26.3k|        bool indefinite = false;
16197|       |
16198|  28.9k|        while (true)
  ------------------
  |  Branch (16198:16): [True: 28.3k, Folded]
  ------------------
16199|  28.3k|        {
16200|  28.3k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1667|  28.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 28.3k]
  |  |  ------------------
  ------------------
16201|      0|            {
16202|      0|                return false;
16203|      0|            }
16204|       |
16205|  28.3k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (16205:17): [True: 720, False: 27.6k]
  ------------------
16206|    720|            {
16207|    720|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1667|    720|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3, False: 717]
  |  |  ------------------
  ------------------
16208|      3|                {
16209|      3|                    return cbor_indefinite_string_error("binary array", "binary");
16210|      3|                }
16211|    717|                indefinite = true;
16212|    717|                get();
16213|    717|                continue;
16214|    720|            }
16215|       |
16216|       |            // a break marker closes the indefinite-length string; outside
16217|       |            // of one it falls through to the error below
16218|  27.6k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (16218:17): [True: 1.97k, False: 25.6k]
  |  Branch (16218:31): [True: 615, False: 1.35k]
  ------------------
16219|    615|            {
16220|    615|                return true;
16221|    615|            }
16222|       |
16223|  27.0k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1667|  27.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 27.0k]
  |  |  ------------------
  ------------------
16224|      0|            {
16225|      0|                return false;
16226|      0|            }
16227|       |
16228|  27.0k|            if (!indefinite)
  ------------------
  |  Branch (16228:17): [True: 25.2k, False: 1.80k]
  ------------------
16229|  25.2k|            {
16230|  25.2k|                return true;
16231|  25.2k|            }
16232|       |
16233|  1.80k|            get();
16234|  1.80k|        }
16235|  26.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
16114|  27.0k|    {
16115|  27.0k|        switch (current)
16116|  27.0k|        {
16117|       |            // Binary data (0x00..0x17 bytes follow)
16118|  20.4k|            case 0x40:
  ------------------
  |  Branch (16118:13): [True: 20.4k, False: 6.54k]
  ------------------
16119|  22.1k|            case 0x41:
  ------------------
  |  Branch (16119:13): [True: 1.61k, False: 25.4k]
  ------------------
16120|  22.5k|            case 0x42:
  ------------------
  |  Branch (16120:13): [True: 416, False: 26.6k]
  ------------------
16121|  22.6k|            case 0x43:
  ------------------
  |  Branch (16121:13): [True: 166, False: 26.8k]
  ------------------
16122|  22.8k|            case 0x44:
  ------------------
  |  Branch (16122:13): [True: 123, False: 26.9k]
  ------------------
16123|  22.9k|            case 0x45:
  ------------------
  |  Branch (16123:13): [True: 190, False: 26.8k]
  ------------------
16124|  23.1k|            case 0x46:
  ------------------
  |  Branch (16124:13): [True: 140, False: 26.8k]
  ------------------
16125|  23.2k|            case 0x47:
  ------------------
  |  Branch (16125:13): [True: 118, False: 26.9k]
  ------------------
16126|  23.4k|            case 0x48:
  ------------------
  |  Branch (16126:13): [True: 151, False: 26.8k]
  ------------------
16127|  23.5k|            case 0x49:
  ------------------
  |  Branch (16127:13): [True: 95, False: 26.9k]
  ------------------
16128|  23.6k|            case 0x4A:
  ------------------
  |  Branch (16128:13): [True: 105, False: 26.9k]
  ------------------
16129|  23.7k|            case 0x4B:
  ------------------
  |  Branch (16129:13): [True: 115, False: 26.9k]
  ------------------
16130|  23.8k|            case 0x4C:
  ------------------
  |  Branch (16130:13): [True: 115, False: 26.9k]
  ------------------
16131|  23.9k|            case 0x4D:
  ------------------
  |  Branch (16131:13): [True: 79, False: 26.9k]
  ------------------
16132|  23.9k|            case 0x4E:
  ------------------
  |  Branch (16132:13): [True: 69, False: 26.9k]
  ------------------
16133|  24.0k|            case 0x4F:
  ------------------
  |  Branch (16133:13): [True: 55, False: 26.9k]
  ------------------
16134|  24.1k|            case 0x50:
  ------------------
  |  Branch (16134:13): [True: 77, False: 26.9k]
  ------------------
16135|  24.1k|            case 0x51:
  ------------------
  |  Branch (16135:13): [True: 50, False: 26.9k]
  ------------------
16136|  24.2k|            case 0x52:
  ------------------
  |  Branch (16136:13): [True: 54, False: 26.9k]
  ------------------
16137|  24.2k|            case 0x53:
  ------------------
  |  Branch (16137:13): [True: 52, False: 26.9k]
  ------------------
16138|  24.3k|            case 0x54:
  ------------------
  |  Branch (16138:13): [True: 43, False: 26.9k]
  ------------------
16139|  24.3k|            case 0x55:
  ------------------
  |  Branch (16139:13): [True: 53, False: 26.9k]
  ------------------
16140|  24.4k|            case 0x56:
  ------------------
  |  Branch (16140:13): [True: 53, False: 26.9k]
  ------------------
16141|  24.4k|            case 0x57:
  ------------------
  |  Branch (16141:13): [True: 61, False: 26.9k]
  ------------------
16142|  24.4k|            {
16143|  24.4k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
16144|  24.4k|            }
16145|       |
16146|    966|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (16146:13): [True: 966, False: 26.0k]
  ------------------
16147|    966|            {
16148|    966|                std::uint8_t len{};
16149|    966|                return get_number(len) &&
  ------------------
  |  Branch (16149:24): [True: 959, False: 7]
  ------------------
16150|    959|                       get_binary(len, result);
  ------------------
  |  Branch (16150:24): [True: 931, False: 28]
  ------------------
16151|  24.4k|            }
16152|       |
16153|    686|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (16153:13): [True: 686, False: 26.3k]
  ------------------
16154|    686|            {
16155|    686|                std::uint16_t len{};
16156|    686|                return get_number(len) &&
  ------------------
  |  Branch (16156:24): [True: 677, False: 9]
  ------------------
16157|    677|                       get_binary(len, result);
  ------------------
  |  Branch (16157:24): [True: 621, False: 56]
  ------------------
16158|  24.4k|            }
16159|       |
16160|    445|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (16160:13): [True: 445, False: 26.5k]
  ------------------
16161|    445|            {
16162|    445|                std::uint32_t len{};
16163|    445|                return get_number(len) &&
  ------------------
  |  Branch (16163:24): [True: 431, False: 14]
  ------------------
16164|    431|                       get_binary(len, result);
  ------------------
  |  Branch (16164:24): [True: 366, False: 65]
  ------------------
16165|  24.4k|            }
16166|       |
16167|    422|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (16167:13): [True: 422, False: 26.6k]
  ------------------
16168|    422|            {
16169|    422|                std::uint64_t len{};
16170|    422|                return get_number(len) &&
  ------------------
  |  Branch (16170:24): [True: 408, False: 14]
  ------------------
16171|    408|                       get_binary(len, result);
  ------------------
  |  Branch (16171:24): [True: 286, False: 122]
  ------------------
16172|  24.4k|            }
16173|       |
16174|     31|            default:
  ------------------
  |  Branch (16174:13): [True: 31, False: 27.0k]
  ------------------
16175|     31|            {
16176|     31|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (16176:133): [True: 31, False: 0]
  ------------------
16177|  24.4k|            }
16178|  27.0k|        }
16179|  27.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  24.9k|    {
18973|  24.9k|        return get_bytes(len, "binary", result);
18974|  24.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  24.9k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  24.9k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  28.7k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 4.06k, False: 24.6k]
  ------------------
19003|  4.06k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  4.06k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 4.02k, False: 42]
  ------------------
19007|  4.06k|                                       ? static_cast<std::size_t>(len)
19008|  4.06k|                                       : chunk_size;
19009|  4.06k|            const std::size_t old_size = result.size();
19010|  4.06k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  4.06k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  4.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 4.06k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  4.06k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  4.06k|            chars_read += bytes_read;
19018|  4.06k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  4.06k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 228, False: 3.83k]
  |  |  ------------------
  ------------------
19019|    228|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    228|                result.resize(old_size + bytes_read);
19024|    228|                ++chars_read;
19025|    228|                current = char_traits<char_type>::eof();
19026|    228|                return unexpect_eof(context);
19027|    228|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  3.83k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  3.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 3.83k, False: 0]
  ------------------
19030|  3.83k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  3.83k|        }
19032|  24.6k|        return true;
19033|  24.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    959|    {
18973|    959|        return get_bytes(len, "binary", result);
18974|    959|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    959|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    959|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.66k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 730, False: 931]
  ------------------
19003|    730|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    730|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 730, False: 0]
  ------------------
19007|    730|                                       ? static_cast<std::size_t>(len)
19008|    730|                                       : chunk_size;
19009|    730|            const std::size_t old_size = result.size();
19010|    730|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    730|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    730|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 730, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    730|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    730|            chars_read += bytes_read;
19018|    730|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    730|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 28, False: 702]
  |  |  ------------------
  ------------------
19019|     28|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     28|                result.resize(old_size + bytes_read);
19024|     28|                ++chars_read;
19025|     28|                current = char_traits<char_type>::eof();
19026|     28|                return unexpect_eof(context);
19027|     28|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    702|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    702|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 702, False: 0]
  ------------------
19030|    702|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    702|        }
19032|    931|        return true;
19033|    959|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    677|    {
18973|    677|        return get_bytes(len, "binary", result);
18974|    677|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    677|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    677|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.09k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 469, False: 621]
  ------------------
19003|    469|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    469|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 449, False: 20]
  ------------------
19007|    469|                                       ? static_cast<std::size_t>(len)
19008|    469|                                       : chunk_size;
19009|    469|            const std::size_t old_size = result.size();
19010|    469|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    469|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    469|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 469, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    469|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    469|            chars_read += bytes_read;
19018|    469|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    469|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 56, False: 413]
  |  |  ------------------
  ------------------
19019|     56|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     56|                result.resize(old_size + bytes_read);
19024|     56|                ++chars_read;
19025|     56|                current = char_traits<char_type>::eof();
19026|     56|                return unexpect_eof(context);
19027|     56|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    413|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    413|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 413, False: 0]
  ------------------
19030|    413|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    413|        }
19032|    621|        return true;
19033|    677|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryImEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    408|    {
18973|    408|        return get_bytes(len, "binary", result);
18974|    408|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    408|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    408|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    492|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 206, False: 286]
  ------------------
19003|    206|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    206|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 106, False: 100]
  ------------------
19007|    206|                                       ? static_cast<std::size_t>(len)
19008|    206|                                       : chunk_size;
19009|    206|            const std::size_t old_size = result.size();
19010|    206|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    206|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    206|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 206, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    206|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    206|            chars_read += bytes_read;
19018|    206|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    206|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 122, False: 84]
  |  |  ------------------
  ------------------
19019|    122|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    122|                result.resize(old_size + bytes_read);
19024|    122|                ++chars_read;
19025|    122|                current = char_traits<char_type>::eof();
19026|    122|                return unexpect_eof(context);
19027|    122|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|     84|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|     84|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 84, False: 0]
  ------------------
19030|     84|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|     84|        }
19032|    286|        return true;
19033|    408|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11enter_arrayEmi:
15094|  94.4k|    {
15095|  94.4k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  94.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17get_cbor_argumentERm:
16251|  2.52k|    {
16252|  2.52k|        switch (current & 0x1F)
16253|  2.52k|        {
16254|    659|            case 0x18: // 1 byte
  ------------------
  |  Branch (16254:13): [True: 659, False: 1.86k]
  ------------------
16255|    659|            {
16256|    659|                std::uint8_t n{};
16257|    659|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    659|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 659]
  |  |  ------------------
  ------------------
16258|      0|                {
16259|      0|                    return false;
16260|      0|                }
16261|    659|                value = n;
16262|    659|                return true;
16263|    659|            }
16264|       |
16265|    988|            case 0x19: // 2 bytes
  ------------------
  |  Branch (16265:13): [True: 988, False: 1.53k]
  ------------------
16266|    988|            {
16267|    988|                std::uint16_t n{};
16268|    988|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    988|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 988]
  |  |  ------------------
  ------------------
16269|      0|                {
16270|      0|                    return false;
16271|      0|                }
16272|    988|                value = n;
16273|    988|                return true;
16274|    988|            }
16275|       |
16276|    369|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (16276:13): [True: 369, False: 2.15k]
  ------------------
16277|    369|            {
16278|    369|                std::uint32_t n{};
16279|    369|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    369|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 369]
  |  |  ------------------
  ------------------
16280|      0|                {
16281|      0|                    return false;
16282|      0|                }
16283|    369|                value = n;
16284|    369|                return true;
16285|    369|            }
16286|       |
16287|    506|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (16287:13): [True: 506, False: 2.01k]
  ------------------
16288|    506|            {
16289|    506|                std::uint64_t n{};
16290|    506|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1667|    506|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 506]
  |  |  ------------------
  ------------------
16291|      0|                {
16292|      0|                    return false;
16293|      0|                }
16294|    506|                value = n;
16295|    506|                return true;
16296|    506|            }
16297|       |
16298|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (16298:13): [True: 0, False: 2.52k]
  ------------------
16299|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (16299:17): [Folded, False: 0]
  ------------------
16300|      0|                return false;        // LCOV_EXCL_LINE
16301|  2.52k|        }
16302|  2.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE23get_cbor_container_sizeEmRmPKc:
16319|  2.44k|    {
16320|  2.44k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1667|  4.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2, False: 2.44k]
  |  |  |  Branch (1667:94): [True: 0, False: 2.44k]
  |  |  |  Branch (1667:94): [True: 2, False: 2.44k]
  |  |  ------------------
  ------------------
16321|      2|        {
16322|      2|            return container_size_error(context);
16323|      2|        }
16324|  2.44k|        result = conditional_static_cast<std::size_t>(len);
16325|  2.44k|        return true;
16326|  2.44k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE20container_size_errorEPKc:
19074|      2|    {
19075|      2|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
19076|      2|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
19077|      2|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12enter_objectEmi:
15100|  21.0k|    {
15101|  21.0k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  21.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15unexpected_byteEPKcSM_:
19130|    110|    {
19131|    110|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|    110|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE14get_half_floatEb:
18845|  5.85k|    {
18846|  5.85k|        const auto byte1_raw = get();
18847|  5.85k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  5.85k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.85k]
  |  |  ------------------
  ------------------
18848|      0|        {
18849|      0|            return false;
18850|      0|        }
18851|  5.85k|        const auto byte2_raw = get();
18852|  5.85k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1667|  5.85k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.85k]
  |  |  ------------------
  ------------------
18853|      0|        {
18854|      0|            return false;
18855|      0|        }
18856|       |
18857|  5.85k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
18858|  5.85k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
18859|       |
18860|       |        // Code from RFC 8949, Appendix D, Figure 3:
18861|       |        // As half-precision floating-point numbers were only added
18862|       |        // to IEEE 754 in 2008, today's programming platforms often
18863|       |        // still only have limited support for them. It is very
18864|       |        // easy to include at least decoding support for them even
18865|       |        // without such support. An example of a small decoder for
18866|       |        // half-precision floating-point numbers in the C language
18867|       |        // is shown in Fig. 3.
18868|  5.85k|        const auto half = little_endian
  ------------------
  |  Branch (18868:27): [True: 0, False: 5.85k]
  ------------------
18869|  5.85k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
18870|  5.85k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
18871|  5.85k|        const double val = [&half]
18872|  5.85k|        {
18873|  5.85k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  5.85k|            const unsigned int mant = half & 0x3FFu;
18875|  5.85k|            JSON_ASSERT(exp <= 31);
18876|  5.85k|            JSON_ASSERT(mant <= 1023);
18877|  5.85k|            switch (exp)
18878|  5.85k|            {
18879|  5.85k|                case 0:
18880|  5.85k|                    return std::ldexp(mant, -24);
18881|  5.85k|                case 31:
18882|  5.85k|                    return (mant == 0)
18883|  5.85k|                    ? std::numeric_limits<double>::infinity()
18884|  5.85k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  5.85k|                default:
18886|  5.85k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  5.85k|            }
18888|  5.85k|        }();
18889|  5.85k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (18889:34): [True: 3.52k, False: 2.33k]
  ------------------
18890|  5.85k|                                 ? static_cast<number_float_t>(-val)
18891|  5.85k|                                 : static_cast<number_float_t>(val), "");
18892|  5.85k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE14get_half_floatEbENKUlvE_clEv:
18872|  5.83k|        {
18873|  5.83k|            const int exp = (half >> 10u) & 0x1Fu;
18874|  5.83k|            const unsigned int mant = half & 0x3FFu;
18875|  5.83k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2591|  5.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18875:13): [True: 5.83k, False: 0]
  ------------------
18876|  5.83k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2591|  5.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18876:13): [True: 5.83k, False: 0]
  ------------------
18877|  5.83k|            switch (exp)
18878|  5.83k|            {
18879|  1.26k|                case 0:
  ------------------
  |  Branch (18879:17): [True: 1.26k, False: 4.57k]
  ------------------
18880|  1.26k|                    return std::ldexp(mant, -24);
18881|  1.21k|                case 31:
  ------------------
  |  Branch (18881:17): [True: 1.21k, False: 4.62k]
  ------------------
18882|  1.21k|                    return (mant == 0)
  ------------------
  |  Branch (18882:28): [True: 638, False: 576]
  ------------------
18883|  1.21k|                    ? std::numeric_limits<double>::infinity()
18884|  1.21k|                    : std::numeric_limits<double>::quiet_NaN();
18885|  3.36k|                default:
  ------------------
  |  Branch (18885:17): [True: 3.36k, False: 2.47k]
  ------------------
18886|  3.36k|                    return std::ldexp(mant + 1024, exp - 25);
18887|  5.83k|            }
18888|  5.83k|        }();
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
18739|    662|    {
18740|       |        // read in the original format
18741|       |
18742|    662|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    662|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 662]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    662|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 651, False: 11]
  |  Branch (18746:34): [Folded, False: 651]
  |  Branch (18746:57): [True: 0, False: 651]
  ------------------
18747|    651|        {
18748|    651|            byte_swap(result);
18749|    651|        }
18750|    662|        return true;
18751|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIfEEbRT_PKc:
18667|    662|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    662|        auto new_chars_read = ia.get_elements(&dest);
18671|    662|        chars_read += new_chars_read;
18672|    662|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    662|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 11, False: 651]
  |  |  ------------------
  ------------------
18673|     11|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     11|            ++chars_read;
18676|     11|            static_cast<void>(report_eof(context));
18677|     11|            return false;
18678|     11|        }
18679|    651|        return true;
18680|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIfEEmPT_m:
 8374|    662|    {
 8375|    662|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    662|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIfEEvRT_:
18698|    651|    {
18699|    651|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    651|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  1.95k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 1.30k, False: 651]
  ------------------
18715|  1.30k|            {
18716|  1.30k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  1.30k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    651|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIfEEbT_:
18825|    651|    {
18826|    651|        const auto result = static_cast<number_float_t>(number);
18827|    651|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  1.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 651]
  |  |  |  Branch (1667:94): [True: 646, False: 5]
  |  |  |  Branch (1667:94): [True: 0, False: 646]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    651|        return sax->number_float(result, "");
18832|    651|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
18739|  1.16k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.16k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.16k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.16k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.16k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.15k, False: 13]
  |  Branch (18746:34): [Folded, False: 1.15k]
  |  Branch (18746:57): [True: 0, False: 1.15k]
  ------------------
18747|  1.15k|        {
18748|  1.15k|            byte_swap(result);
18749|  1.15k|        }
18750|  1.16k|        return true;
18751|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   260k|    {
18653|   260k|        ++chars_read;
18654|   260k|        return current = ia.get_character();
18655|   260k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter13get_characterEv:
 8367|   260k|    {
 8368|   260k|        return std::fgetc(m_file);
 8369|   260k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    398|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    398|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    398|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 116, False: 282]
  ------------------
19120|    398|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  6.72k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEED2Ev:
13881|  6.72k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterEP8_IO_FILE:
 9114|  6.72k|{
 9115|  6.72k|    if (file == nullptr)
  ------------------
  |  Branch (9115:9): [True: 0, False: 6.72k]
  ------------------
 9116|      0|    {
 9117|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9118|      0|    }
 9119|  6.72k|    return file_input_adapter(file);
 9120|  6.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EP8_IO_FILE:
 8354|  6.72k|        : m_file(f)
 8355|  6.72k|    {
 8356|       |        JSON_ASSERT(m_file != nullptr);
  ------------------
  |  | 2591|  6.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8356:9): [True: 6.72k, False: 0]
  ------------------
 8357|  6.72k|    }

LLVMFuzzerTestOneInput:
   46|  6.72k|{
   47|  6.72k|    std::vector<uint8_t> const vec1(data, data + size);
   48|       |
   49|       |    // step 0: parse input without exceptions
   50|  6.72k|    bool noexcept_threw = false;
   51|  6.72k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_cbor(vec1, true, false); }, noexcept_threw);
   52|       |    // whether step 1 succeeded; if not, the catch blocks below check that
   53|       |    // step 0 failed, too
   54|  6.72k|    bool parsed = false;
   55|       |
   56|  6.72k|    try
   57|  6.72k|    {
   58|       |        // step 1: parse input
   59|  6.72k|        json const j1 = json::from_cbor(vec1);
   60|  6.72k|        parsed = true;
   61|       |
   62|       |        // without exceptions, the same input must give the same value
   63|  6.72k|        assert(!noexcept_threw && !j_noexcept.is_discarded() && same_value(j_noexcept, j1));
  ------------------
  |  Branch (63:9): [True: 3.60k, False: 3.12k]
  |  Branch (63:9): [True: 3.60k, False: 0]
  |  Branch (63:9): [True: 3.60k, False: 0]
  |  Branch (63:9): [True: 3.60k, False: 3.12k]
  ------------------
   64|       |
   65|  3.60k|        try
   66|  3.60k|        {
   67|       |            // step 2: round trip
   68|  3.60k|            std::vector<uint8_t> const vec2 = json::to_cbor(j1);
   69|       |
   70|       |            // parse serialization
   71|  3.60k|            json const j2 = json::from_cbor(vec2);
   72|       |
   73|       |            // serializations must match
   74|  3.60k|            assert(json::to_cbor(j2) == vec2);
  ------------------
  |  Branch (74:13): [True: 3.60k, False: 0]
  ------------------
   75|  3.60k|        }
   76|  3.60k|        catch (const json::parse_error&)
   77|  3.60k|        {
   78|       |            // parsing a CBOR serialization must not fail
   79|      0|            assert(false);
  ------------------
  |  Branch (79:13): [Folded, False: 0]
  ------------------
   80|      0|        }
   81|  3.60k|    }
   82|  6.72k|    catch (const json::parse_error&)
   83|  6.72k|    {
   84|       |        // parse errors are ok, because input may be random bytes
   85|  2.90k|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (85:9): [True: 0, False: 2.90k]
  |  Branch (85:9): [True: 0, False: 2.90k]
  |  Branch (85:9): [True: 2.90k, False: 0]
  |  Branch (85:9): [True: 2.90k, False: 0]
  ------------------
   86|  2.90k|    }
   87|  6.72k|    catch (const json::type_error&)
   88|  6.72k|    {
   89|       |        // type errors can occur during parsing, too
   90|      0|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  ------------------
   91|      0|    }
   92|  6.72k|    catch (const json::out_of_range&)
   93|  6.72k|    {
   94|       |        // out of range errors can occur during parsing, too
   95|    220|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (95:9): [True: 0, False: 220]
  |  Branch (95:9): [True: 0, False: 220]
  |  Branch (95:9): [True: 220, False: 0]
  |  Branch (95:9): [True: 220, False: 0]
  ------------------
   96|    220|    }
   97|       |
   98|       |    // step 3: the other input adapters must read the data alike
   99|  6.72k|    check_input_adapters(data, size, read_cbor());
  100|       |
  101|       |    // return 0 - non-zero return values are reserved for future use
  102|  6.72k|    return 0;
  103|  6.72k|}
fuzzer-parse_cbor.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_0clEv:
   51|  6.72k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_cbor(vec1, true, false); }, noexcept_threw);
fuzzer-parse_cbor.cpp:_ZNK12_GLOBAL__N_19read_cborclIJRPKhS3_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  6.72k|    {
   39|  6.72k|        return json::from_cbor(std::forward<Args>(args)...);
   40|  6.72k|    }
fuzzer-parse_cbor.cpp:_ZNK12_GLOBAL__N_19read_cborclIJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcS5_S7_EEblmdS6_NSB_14adl_serializerENSE_IhNS6_IhEEEEvEEDpOT_:
   38|  6.72k|    {
   39|  6.72k|        return json::from_cbor(std::forward<Args>(args)...);
   40|  6.72k|    }
fuzzer-parse_cbor.cpp:_ZNK12_GLOBAL__N_19read_cborclIJNSt3__121__list_const_iteratorIhPvEES5_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdSE_NS7_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  6.72k|    {
   39|  6.72k|        return json::from_cbor(std::forward<Args>(args)...);
   40|  6.72k|    }
fuzzer-parse_cbor.cpp:_ZNK12_GLOBAL__N_19read_cborclIJRP8_IO_FILEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  6.72k|    {
   39|  6.72k|        return json::from_cbor(std::forward<Args>(args)...);
   40|  6.72k|    }

_Z10same_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEESG_:
   34|  3.60k|{
   35|  3.60k|    return lhs.dump(-1, ' ', false, json::error_handler_t::keep) == rhs.dump(-1, ' ', false, json::error_handler_t::keep);
   36|  3.60k|}
fuzzer-parse_cbor.cpp:_Z24parse_without_exceptionsIZ22LLVMFuzzerTestOneInputE3$_0EN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS2_14adl_serializerENS6_IhNSA_IhEEEEvEET_Rb:
   44|  6.72k|{
   45|  6.72k|    threw = false;
   46|  6.72k|    try
   47|  6.72k|    {
   48|  6.72k|        return parse();
   49|  6.72k|    }
   50|  6.72k|    catch (const json::parse_error&)
   51|  6.72k|    {
   52|      0|        assert(false);
  ------------------
  |  Branch (52:9): [Folded, False: 0]
  ------------------
   53|      0|    }
   54|  6.72k|    catch (const json::exception&)
   55|  6.72k|    {
   56|      0|        threw = true;
   57|      0|    }
   58|      0|    return {};
   59|  6.72k|}
fuzzer-parse_cbor.cpp:_Z20check_input_adaptersIN12_GLOBAL__N_19read_cborEEvPKhmRKT_:
  117|  6.72k|{
  118|  6.72k|    const read_outcome expected = read_with(parse, data, data + size);
  119|       |
  120|       |    // stream adapter
  121|  6.72k|    {
  122|  6.72k|        std::istringstream stream(std::string(reinterpret_cast<const char*>(data), size));
  123|  6.72k|        assert(read_with(parse, stream) == expected);
  ------------------
  |  Branch (123:9): [True: 6.72k, False: 0]
  ------------------
  124|  6.72k|    }
  125|       |
  126|       |    // iterator adapter on a non-contiguous range
  127|  6.72k|    {
  128|  6.72k|        const std::list<std::uint8_t> list(data, data + size);
  129|  6.72k|        assert(read_with(parse, list.begin(), list.end()) == expected);
  ------------------
  |  Branch (129:9): [True: 6.72k, False: 0]
  ------------------
  130|  6.72k|    }
  131|       |
  132|  6.72k|#if defined(__unix__) || defined(__APPLE__)
  133|       |    // FILE* adapter; fmemopen may refuse an empty buffer
  134|  6.72k|    {
  135|  6.72k|        std::vector<std::uint8_t> buffer(data, data + size);
  136|  6.72k|        std::FILE* file = buffer.empty() ? nullptr : fmemopen(buffer.data(), buffer.size(), "rb");
  ------------------
  |  Branch (136:27): [True: 0, False: 6.72k]
  ------------------
  137|  6.72k|        if (file != nullptr)
  ------------------
  |  Branch (137:13): [True: 6.72k, False: 0]
  ------------------
  138|  6.72k|        {
  139|  6.72k|            const read_outcome actual = read_with(parse, file);
  140|  6.72k|            std::fclose(file);
  141|       |            assert(actual == expected);
  ------------------
  |  Branch (141:13): [True: 6.72k, False: 0]
  ------------------
  142|  6.72k|        }
  143|  6.72k|    }
  144|  6.72k|#endif
  145|  6.72k|}
fuzzer-parse_cbor.cpp:_Z9read_withIN12_GLOBAL__N_19read_cborEJRPKhS3_EE12read_outcomeRKT_DpOT0_:
   88|  6.72k|{
   89|  6.72k|    read_outcome result;
   90|  6.72k|    try
   91|  6.72k|    {
   92|  6.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  6.72k|    }
   94|  6.72k|    catch (const json::parse_error& e)
   95|  6.72k|    {
   96|  2.90k|        result.id = e.id;
   97|  2.90k|        result.what = e.what();
   98|  2.90k|        result.byte = e.byte;
   99|  2.90k|    }
  100|  6.72k|    catch (const json::exception& e)
  101|  6.72k|    {
  102|    220|        result.id = e.id;
  103|    220|        result.what = e.what();
  104|    220|    }
  105|  6.72k|    return result;
  106|  6.72k|}
_Z13outcome_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEE:
   77|  14.4k|{
   78|  14.4k|    return j.dump(-1, ' ', false, json::error_handler_t::keep);
   79|  14.4k|}
fuzzer-parse_cbor.cpp:_Z9read_withIN12_GLOBAL__N_19read_cborEJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE12read_outcomeRKT_DpOT0_:
   88|  6.72k|{
   89|  6.72k|    read_outcome result;
   90|  6.72k|    try
   91|  6.72k|    {
   92|  6.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  6.72k|    }
   94|  6.72k|    catch (const json::parse_error& e)
   95|  6.72k|    {
   96|  2.90k|        result.id = e.id;
   97|  2.90k|        result.what = e.what();
   98|  2.90k|        result.byte = e.byte;
   99|  2.90k|    }
  100|  6.72k|    catch (const json::exception& e)
  101|  6.72k|    {
  102|    220|        result.id = e.id;
  103|    220|        result.what = e.what();
  104|    220|    }
  105|  6.72k|    return result;
  106|  6.72k|}
_ZNK12read_outcomeeqERKS_:
   71|  20.1k|    {
   72|  20.1k|        return value == rhs.value && id == rhs.id && what == rhs.what && byte == rhs.byte;
  ------------------
  |  Branch (72:16): [True: 20.1k, False: 0]
  |  Branch (72:38): [True: 20.1k, False: 0]
  |  Branch (72:54): [True: 20.1k, False: 0]
  |  Branch (72:74): [True: 20.1k, False: 0]
  ------------------
   73|  20.1k|    }
fuzzer-parse_cbor.cpp:_Z9read_withIN12_GLOBAL__N_19read_cborEJNSt3__121__list_const_iteratorIhPvEES5_EE12read_outcomeRKT_DpOT0_:
   88|  6.72k|{
   89|  6.72k|    read_outcome result;
   90|  6.72k|    try
   91|  6.72k|    {
   92|  6.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  6.72k|    }
   94|  6.72k|    catch (const json::parse_error& e)
   95|  6.72k|    {
   96|  2.90k|        result.id = e.id;
   97|  2.90k|        result.what = e.what();
   98|  2.90k|        result.byte = e.byte;
   99|  2.90k|    }
  100|  6.72k|    catch (const json::exception& e)
  101|  6.72k|    {
  102|    220|        result.id = e.id;
  103|    220|        result.what = e.what();
  104|    220|    }
  105|  6.72k|    return result;
  106|  6.72k|}
fuzzer-parse_cbor.cpp:_Z9read_withIN12_GLOBAL__N_19read_cborEJRP8_IO_FILEEE12read_outcomeRKT_DpOT0_:
   88|  6.72k|{
   89|  6.72k|    read_outcome result;
   90|  6.72k|    try
   91|  6.72k|    {
   92|  6.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  6.72k|    }
   94|  6.72k|    catch (const json::parse_error& e)
   95|  6.72k|    {
   96|  2.90k|        result.id = e.id;
   97|  2.90k|        result.what = e.what();
   98|  2.90k|        result.byte = e.byte;
   99|  2.90k|    }
  100|  6.72k|    catch (const json::exception& e)
  101|  6.72k|    {
  102|    220|        result.id = e.id;
  103|    220|        result.what = e.what();
  104|    220|    }
  105|  6.72k|    return result;
  106|  6.72k|}

